[英]python assignment fails in else part of conditional operation
為什么分配在其他部分失敗? 我試圖根據一行下面的條件來增加兩個變量。
>>> a=0
>>> b=0
>>> a+=1 if True else b
>>> a
>>> 1
>>> a if True else b+=1
File "<input>", line 1
SyntaxError: can't assign to conditional expression
>>> a if False else b+=1
File "<input>", line 1
SyntaxError: can't assign to conditional expression
>>> a+=1 if False else b
>>> a
>>> 1
>>> a+=1 if True else b+=1
File "<input>", line 1
a+=1 if True else b+=1
^
SyntaxError: invalid syntax
a+=1 if True else b
解析為
a += (1 if True else b)
在Python中,賦值不是表達式。
在python中,在一行中,賦值運算符的右側不能再使用賦值。
例如a = b + (c = d)
,無法在python中完成。
再次參考上面的示例:
b = 10
a = 20
a+=1 if True else b # this is valid.
a+=1 if False else b # this is valid.
a if True else b+=1 # this is invalid.
a if False else b+=1 # this is invalid.
a+=1 if True else b+=1 # this is invalid.
t = a if True else b=1 # this is invalid.
在這些語句中,如果我們嘗試打印a if True else b
會打印b值。 但是上面的代碼嘗試在表達式中使用賦值,因此在python中是不允許的。
這種語法在C語言中是允許的,但在python中是不允許的。 例如,在C語言中,我們可以這樣寫
if (a=10): printf("%d", a);
實際上會在條件內對a進行賦值並通過條件並執行(如果執行)。
在python中,如果將代碼編寫為:
if a=10: print a
一個只能用python這樣寫
if a==10 : print a
你想要的是
if True: a+=1
else: b+=1
原因是x if cond else y
在python中包含x if cond else y
則表示語法x if cond else y
的含義。 此語法的含義不是, operation_a if condition else operation_b
為operation_a if condition else operation_b
,而是value_a if condition else value_b
這意味着使用它的正確方法是
var = val1 if condition else val2
並不是:
var1=val1 if condition else var2=val2
在以下位置閱讀更多信息 : 有關oneliner運算符的詳細信息
PS:使用類似以下的技巧:
(var1=val1) if condition else (var2=val2)
可能有效,但是不要使用它,因為它不是pythonic的,而且乍一看該語句的返回值並不明顯(“顯式更好,然后隱式”)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.