小编mwc*_*vic的帖子

一行中的Python多个赋值语句

(别担心,这不是关于解包元组的另一个问题.)

在python中,语句foo = bar = baz = 5将变量foo,bar和baz赋值为5.它从左到右分配这些变量,这可以通过像nastier这样的例子来证明

>>> foo[0] = foo = [0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'foo' is not defined
>>> foo = foo[0] = [0]
>>> foo
[[...]]
>>> foo[0]
[[...]]
>>> foo is foo[0]
True
Run Code Online (Sandbox Code Playgroud)

python语言参考声明赋值语句具有该形式

(target_list "=")+ (expression_list | yield_expression)
Run Code Online (Sandbox Code Playgroud)

在分配时,expression_list首先评估,然后分配.

那么这条线怎么可能foo = bar = 5是有效的,因为它bar = 5不是一个expression_list?如何在一行上解析和评估这些多项任务?我读错了语言参考吗?

python variable-assignment

32
推荐指数
4
解决办法
2万
查看次数

标签 统计

python ×1

variable-assignment ×1