首页  >  文章  >  后端开发  >  Python 中的链式赋值如何工作?处理可变对象时有哪些潜在陷阱?

Python 中的链式赋值如何工作?处理可变对象时有哪些潜在陷阱?

Linda Hamilton
Linda Hamilton原创
2024-10-27 10:10:031018浏览

How do chained assignments work in Python, and what are the potential pitfalls when dealing with mutable objects?

链式赋值是如何工作的?

Python 中的链式赋值,例如:

x = y = somefunction()

相当于下面两条顺序执行的语句:

temp = somefunction()
x = temp
y = temp

这意味着首先计算赋值运算符右侧的表达式,然后将结果值赋给所有左侧的变量,从左到右。

例如,以下代码将打印数字 10 两次:

def somefunction():
    return 10

x = y = somefunction()
print(x)
print(y)

需要注意的是,链式赋值可以是处理可变对象(例如列表)时会出现问题。例如,以下代码将相同的空列表分配给 x 和 y:

x = y = []

x.append(1)

print(x)
print(y)

这将打印 [1, 1],因为 x 和 y 引用相同的列表。如果您打算创建两个单独的列表,则应该编写:

x = []
y = []

x.append(1)

print(x)
print(y)

这将打印 [1] 和 [],因为 x 和 y 引用不同的列表。

以上是Python 中的链式赋值如何工作?处理可变对象时有哪些潜在陷阱?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn