为什么在其他部分失败?我试图根据一行以下的条件增加两个变量。
>>> 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
答案 0 :(得分:3)
a+=1 if True else b
被解析为
a += (1 if True else b)
在Python中,赋值是不是表达式。
答案 1 :(得分:1)
在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并传递条件并执行if part。
在python中,如果你将代码编写为:
,它只会抛出一个错误if a=10: print a
只能像在
中一样编写pythonif a==10 : print a
答案 2 :(得分:0)
你想要的是
if True: a+=1
else: b+=1
答案 3 :(得分:-1)
原因是python中语法x if cond else y
的含义。此语法的含义不是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
阅读详情:details about if else oneliner operator
P.S:使用类似的黑客:
(var1=val1) if condition else (var2=val2)
可能会工作,但不要使用它,因为它不是pythonic,并且这个语句的返回值乍一看并不明显(“显式更好然后隐式”)