python中的赋值运算符`=`

时间:2017-12-24 08:00:16

标签: python

如果我有三个变量,例如x,y,z=1,2,3,我可以使用x=y=z但不能在python中使用x=(y=z)x=y=zx=(y=z)之间有什么区别?

2 个答案:

答案 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分配xy 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