Python中的赋值运算符`=`

2024-03-28 08:40:08 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 区别
2条回答

y=z是一个赋值语句,而不是表达式(比如C)。它只能在需要语句的地方使用。例如,您不能执行print(y=z)。所以x=(y=z)在语法上是错误的。你知道吗

x=y=z是单个赋值,而不是两个赋值的组合。语法特别允许在赋值语句中链接目标。相关语法位:

assignment_stmt ::=  (target_list "=")+ (expression_list | yield_expression)

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。不幸的是,表达式y=z在Python的括号中不是这样计算的。你知道吗

In [137]: x=(y=z)
  File "<ipython-input-137-445a19ecd607>", line 1
    x=(y=z)
        ^
SyntaxError: invalid syntax

另一方面,如果您希望将等价性测试的结果“isy等于z”,则可以使用以下方法:

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

相关问题 更多 >