[英]python 3 boolean logic shortcut
我的代碼看起來像這樣:
x = someIntValue
if y is None:
y = x
elif x < y:
y = x
有沒有更短的方法來做到這一點? 例如,類似: y = x if x < y or not y
?
問題是y
可以是None
和或數字
由於兩個條件的最終結果相同,因此您可以將它們合並為一個 if。
if y is None or x < y :
y = x
正如@Giacomo 在評論中解釋的那樣,可以使用一個襯里版本(因為 y 已經定義)
y = x if ( y is None or x < y ) else y
您不能使用條件表達式准確地編寫此代碼,因為在兩個 boolean 表達式均為False
的情況下根本不會分配y
(好吧,如果您願意將y
重新分配給它自己,則可以)。 您可以或當然可以不用elif
:
x = someIntValue
if y is None or x < y:
y = x
(我假設y
在此之前也有一個值)。
你的x < y or not y
不好有兩個原因。 首先,它在not y
之前評估x < y
,如果y
是None
則失敗。 其次, not y
在邏輯上不等同於y is None
。 例如,對於y = 0
, not y
結果為True
而y is None
結果為False
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.