![](/img/trans.png)
[英]What is the best way to do automatic attribute assignment in Python, and is it a good idea?
[英]Best way to do conditional assignment in python
我經常使用它,但它很丑:
a = (lambda x: x if x else y)(get_something())
所以我寫了這個 function:
def either(val, alt):
if val:
return val
else:
return alt
所以你可以這樣做:
a = either(get_something(), y)
是否有內置的 function (類似於 T-SQL 中的 ISNULL)?
or
操作符做你想做的事:
get_something() or y
事實上,它是可鏈接的,就像COALESCE
一樣(與ISNULL
不同)。 下面的表達式計算最左邊的參數,該參數轉換為 True。
A or B or C
您可以使用:
a = get_something() or y
如果get_something
在 boolean 上下文中為True
,則其值將分配給a
。 否則y
將被分配給a
。
您可以使用簡單的or
,如下所示:
>>> a = None
>>> b = 1
>>> c = (a or b) # parentheses are optional
>>> c
1
簡單的!
更多條件代碼:
a = b if b else val
對於您的代碼:
a = get_something() if get_something() else val
有了它,你可以做這樣的復雜條件:
a = get_something() if get_something()/2!=0 else val
我還使用(a,b)[condition based on the value of a]
形式,將get_something()
調用的結果保存到a
中,在極少數情況下最好在這里展示: http://mail。 python.org/pipermail/python-list/2002-September/785515.html
...
a=0 b=None a or b => None (a,b)[a is None] => 0
a=() b=None a or b => None (a,b)[a is None] => ()
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.