Python’的奇怪行为是’

参见英文答案 >
“is” operator behaves unexpectedly with integers                                    11个

Python版本:win32上的Python 3.5.1(v3.5.1:37a07cee5969,2015年12月6日,01:38:48)[MSC v.1900 32位(英特尔)].

>>> 256 is (2**8)
True
>>> 512 is (2**9)
False

UPD

>>> print(id(256), id(2**8))
1933723392 1933723392
>>> print(id(512), id(2**9))
60976880 60976704

最佳答案 检查两个变量是否存储在同一个内存位置.以下说明这两个数字存储在内存中的不同位置:

>>> 512 is (2**9)
False

很可能,你真正想知道的是数字是否相等.为此,测试相等性:

>>> 512 == (2**9)
True

特殊情况:无

没有任何合理的价值.因此,检查某些内容是否等于None通常没有用.要确定某个变量是否为None,请使用:

>>> x = None
>>> x is None
True
点赞