码迷,mamicode.com
首页 > 其他好文 > 详细

一点困惑和思考

时间:2017-11-12 18:41:27      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:c++   开始   new   代码   bsp   目标   highlight   log   地址   

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

 

一点困惑和思考

标签:c++   开始   new   代码   bsp   目标   highlight   log   地址   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!