[英]More pythonic way to write this?
我在這里有此代碼:
import re
def get_attr(str, attr):
m = re.search(attr + r'=(\w+)', str)
return None if not m else m.group(1)
str = 'type=greeting hello=world'
print get_attr(str, 'type') # greeting
print get_attr(str, 'hello') # world
print get_attr(str, 'attr') # None
哪個可行,但我並不特別喜歡這一行:
return None if not m else m.group(1)
我認為,如果我們可以使用三元運算符,這看起來會更干凈:
return (m ? m.group(1) : None)
但是,那當然不存在。 你有什么建議?
Python 具有三元運算符。 您正在使用它。 X if Y else Z
只是X if Y else Z
形式的X if Y else Z
也就是說,我傾向於將這些內容寫出來。 如果您犧牲了清晰度,那么將事情放在一條線上並不是那么好。
def get_attr(str, attr):
m = re.search(attr + r'=(\w+)', str)
if m:
return m.group(1)
return None
另一種選擇是使用:
return m.group(1) if m else m
它是明確的,並且您不必為理解它而做任何邏輯難題:)
return m and m.group(1)
這將是一種Python的方式。
如果m
為None
(或其他評估為“錯誤”的東西),則返回m
,但如果m
為“ true-ish”,則返回m.group(1)
。
您所擁有的是python的條件運算符。 IMO完全是pythonic形式,不需要任何更改。 請記住, explicit is better than implicit
。 您現在擁有的是可讀且立即可理解的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.