用多个等号一次声明两个变量是pythonic吗?

做类似的事情

a = b = 5

a
Out[63]: 5

b
Out[64]: 5

它似乎没有任何问题,我无法想象有任何缺点。我找不到任何这样的例子,也找不到关于是否应该使用它的说明。有理由不这样做吗?

回答

使用此代码,您不会遇到任何问题,因为您正在分配一个数字,并且数字是不可变的。

将其与使用可变值时进行比较:

a = b = []  # Mutable list
a.append(1)  # Mutate mutable list
print(a, b)  # [1] [1]  # Oops

所以,要小心这一点。仅当引用同一对象的两个变量都没有问题时才使用它。


不过,我要澄清一下,问题并不是对象是可变的,而是作为可变对象,它能够被变异,而这种变异是有问题的。如果您“将列表视为不可变的”,那么使用这种方式完全没问题:

a = b = []
# Some other code
a = [1]  # Maybe these are conditional reassignments in a loop or something
b = [2]

print(a, b)  # [1] [2]

虽然,如果您使用这样的列表,您可能最好使用元组或其他不可变对象。


以上是用多个等号一次声明两个变量是pythonic吗?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>