虽然有很多类似的介绍,但是我觉得我还得记录下,只有记录下来了才能算是自己的东西。
但是float类型却不行:
在pyhon中,==的概念就是值(value)相同就为true,但是is的概念是必须是ID相同,也就是存储地址相同,或者说指向地址相同。
例子
>>> a = [1, 2, 3]
>>> b = a
>>> b is a
True
>>> b == a
True
>>> b = a[:]
>>> b is a
False
>>> b == a
True
<pre name="code" class="python">>>> id(a)
1905732376584
>>> id(b)
1905732376840
这样子就可以看到明显的不同。
但是因为Python对于短小的int与string类型进行了地址上的优化,所以有时候使用起来==与is基本类似。
例子:
a=4
b=4
a is b
结果应为true
但是float类型却不行:
a=2.5
b=2.5
a is b
结果为false
另外,闲着蛋疼,实测下来int类型最大极限应该是256。
>>> a=256
>>> a is 256
True
>>> id(a)
1511989680
>>> id(256)
1511989680
>>> a=257
>>> a is 257
False
>>> id(a)
2310294174960
>>> id(257)
2310294174800