受这个关于 Python 缓存小整数的问题的启发。
Python 编译器是否可以在编译时将 (0 - 6) 替换为 -6?下面的代码表明它没有。如果不可能,为什么不呢?我不认为0
, -
, or的含义6
在运行时会有所不同。
如果这是可能的,为什么 CPython 不这样做呢?
# test_integers.py
def test_integers():
print "-6 is -6 ?", -6 is -6 # True
print "(0 - 6) is -6 ?", (0 - 6) is -6 # False
# import_test_integers.py
import test_integers
test_integers.test_integers()
如果这非常依赖于实现,我的 Python 详细信息:
Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56)
[GCC 4.4.3] on linux2