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

is和 =

时间:2017-10-26 20:56:06      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:范围   logs   容器   pre   没有   false   数据   类型   地址   

a is b:a和b的内存地址相等

a == b :a和b的值相等

a = b =1,:是1的两个标签

a = 1和b = 1理论上说对象是不一样的。

>>> a =1
>>> b =1
>>> c = 2
>>> a == b     #值相等
True
>>> a == c
False
>>> a is b     #a和b指向的是一个值,内存地址相同
True
>>> a is c
False
>>> e = 365   #但是有例外
>>> f = 365
>>> e is f
False
>>> e == f
True

先要在重新声明的是:字符串、数字都是属于非容器,因此不存在拷贝一说。

按理说,365和1都是属于类原子类型,都是不能在更改,为啥会有完全不同的结果了?

这是因为对于数字来说,有一个小数据池,创建相同的数字对象,都会指向一个相同的数据池,范围在-5~~255之间,这样做也是为了节省内存。

>>> e = 365
>>> f = 365
>>> e is f
False
>>> e == f  #值虽然相等
True

>>> id(e)   #内存地址并不相同
139928493356080
>>> id(f)
139928493355696

相对于数字来说,没有空格的字符串也有小数据池。

>>> oo = wo shi
>>> op = wo shi
>>> id(oo)
139928493584544
>>> id(op)
139928493584656

>>> a = wqrqw  #有地址池
>>> b = wqrqw
>>> id(a)
139928493545768
>>> id(b)
139928493545768

 

is和 =

标签:范围   logs   容器   pre   没有   false   数据   类型   地址   

原文地址:http://www.cnblogs.com/yangmingxianshen/p/7738966.html

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