如果我有三个变量,例如x,y,z=1,2,3
,我可以使用x=y=z
但不能在python中使用x=(y=z)
。 x=y=z
和x=(y=z)
之间有什么区别?
答案 0 :(得分:1)
y=z
是赋值语句,而不是表达式(因为它在C中)。它只能在需要声明的地方使用。例如,您不能print(y=z)
。所以x=(y=z)
在语法上是不正确的。
x=y=z
是单个作业,而不是两个作业的组合。语法特别允许目标在赋值语句中链接。相关的语法位:
assignment_stmt ::= (target_list "=")+ (expression_list | yield_expression)
答案 1 :(得分:1)
x=y=z
分配x
和y
z
中存储的值。
In [133]: z = 5
In [134]: x = y = z
In [135]: x
Out[135]: 5
In [136]: y
Out[136]: 5
x=(y=z)
想要在括号中为x
分配表达式的结果。不幸的是,在括号内的Python中,表达式y=z
不会以这种方式进行评估。
In [137]: x=(y=z)
File "<ipython-input-137-445a19ecd607>", line 1
x=(y=z)
^
SyntaxError: invalid syntax
如果另一方面,您希望将等效性测试的结果分配为&#34; y
等于z
&#34;,那么您可以使用以下内容进行操作:
x=(y == z)
In [138]: x = (y == z)
In [139]: x
Out[139]: True
In [140]: y
Out[140]: 5
In [141]: z
Out[141]: 5