一点困惑和思考
Posted newen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一点困惑和思考相关的知识,希望对你有一定的参考价值。
在学习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中,变量名似乎更加像一个个标签,想贴哪贴哪,一个个内存,就是被贴的目标
以上是关于一点困惑和思考的主要内容,如果未能解决你的问题,请参考以下文章