一点困惑和思考

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中,变量名似乎更加像一个个标签,想贴哪贴哪,一个个内存,就是被贴的目标

 

以上是关于一点困惑和思考的主要内容,如果未能解决你的问题,请参考以下文章

我对职业规划和未来发展的一些思考

对这个带有 & 不带 = 的代码片段返回类型感到非常困惑

哈斯克尔。我很困惑这个代码片段是如何工作的

基于时间复杂度的这些片段真的很困惑

初次走上技术管理岗位的思考总结

转:测试十年-我难以逾越的困惑和痛苦和思考