2024-03-28 08:40:08 发布
网友
如果我有三个变量,比如x,y,z=1,2,3,我可以在python中使用x=y=z,但不能使用x=(y=z)。x=y=z和x=(y=z)有什么区别?你知道吗
x,y,z=1,2,3
x=y=z
x=(y=z)
y=z是一个赋值语句,而不是表达式(比如C)。它只能在需要语句的地方使用。例如,您不能执行print(y=z)。所以x=(y=z)在语法上是错误的。你知道吗
y=z
print(y=z)
x=y=z是单个赋值,而不是两个赋值的组合。语法特别允许在赋值语句中链接目标。相关语法位:
assignment_stmt ::= (target_list "=")+ (expression_list | yield_expression)
x=y=z分配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。不幸的是,表达式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
y=z
是一个赋值语句,而不是表达式(比如C)。它只能在需要语句的地方使用。例如,您不能执行print(y=z)
。所以x=(y=z)
在语法上是错误的。你知道吗x=y=z
是单个赋值,而不是两个赋值的组合。语法特别允许在赋值语句中链接目标。相关语法位:x=y=z
分配x
和y
存储在z
中的值。你知道吗x=(y=z)
要将括号中表达式的结果赋值给x
。不幸的是,表达式y=z
在Python的括号中不是这样计算的。你知道吗另一方面,如果您希望将等价性测试的结果“is
y
等于z
”,则可以使用以下方法:x=(y == z)
相关问题 更多 >
编程相关推荐