在 python 中 a += b 的行为方式并不总是与 a = a + b 相同,相同的操作数在不同的条件下可能会给出不同的结果。但要了解它们为何表现出不同的行为,您必须深入研究变量的工作原理。
所以首先,你需要知道幕后发生了什么。
创建新变量:
a = 10
print(" id of a : ", id(10) ," Value : ", a )
输出 :
id of a : 11094592 Value : 10
在上面的示例中,值 10 被存储在内存中,并且它的引用被分配给 a。
修改变量:
a = 10 # 为变量赋值创建新对象
print(" id of a : ", id(a) ," Value : ", a )
a = a + 10 # 修改变量的值创建新对象
print(" id of a : ", id(a) ," Value : ", a )
a += 10 # Modifying value of variable creats new object
print(" id of a : ", id(a) ," Value : ", a )
输出 :
id of a : 11094592 Value : 10
id of a : 11094912 Value : 20
id of a : 11095232 Value : 30
每当我们创建或修改 int、float、char、string 时,它们都会创建新对象并将新创建的引用分配给它们各自的变量。
但是列表中没有看到相同的行为
a = [0, 1] # 将此数组存储在内存中并将其引用分配给a
print("id of a: ",id(a)