一点困惑和思考

在学习c++中,a+=b,那么就同等于a=a+b

但是在python中是否如此呢。

所以就有了

a=[100]
a=a+a
#此时a=[100,100],但不妨思考一下,地址还是最开始a的地址吗

 于是有了我尝试的以下代码

 1 a=[100]
 2 print(id(a))
 3 
 4 a=a+a
 5 print(id(a))
 6 
 7 b=[100]
 8 print(id(b))
 9 
10 b+=[100]
11 print(id(b))

然而得到的结果却是

3071558316
3071558444
3071558316
3071558316

很有趣的结果不是吗,

事实上,在python中,a=1,等于号的意思应该是,在一个内存中,寻找一个内容为1的地址,然后把这个地址的引用给了a(假如没有的话,就new一个喽),但是如果有了,那么直接把引用交给这个变量就行了。

于是我又尝试了以下代码

 1 a=1
 2 print(id(a))
 3 b=1
 4 print(id(b))
 5 c=1
 6 print(id(c))
 7 d=1
 8 print(id(d))
 9 f=1
10 print(id(f))

结果为

139424192
139424192
139424192
139424192
139424192

所以在python中,变量名似乎更加像一个个标签,想贴哪贴哪,一个个内存,就是被贴的目标

原文地址:https://www.cnblogs.com/zimudao/p/7822255.html