【发布时间】:2020-04-18 05:58:44
【问题描述】:
在 Python 中,如果我运行
test_list = []
test_list += [1]
print(id(test_list))
我可以发现test_list的身份没有改变。
但是,如果我运行
test_list = []
test_list = test_list + [1]
print(id(test_list))
输出显示身份已更改。
有什么区别?
我在编写带有列表作为参数的递归函数时发现了这一点,其中函数外部的变量因运算符 += 而受到影响。
a += b 与 a = a + b 不一样吗?
【问题讨论】:
-
“a += b 不等于 a = a + b 吗?” - 不,这是 Python 对新手来说最大的惊喜之一。
-
a += b修改现有列表,这是一个就地添加 (__iadd__) 而a + b创建一个新列表。
标签: python