在尝试回答有关is
关键字使用的问题时,我发现这段代码:
脚本:
a = 123456
b = 123456
print a is b # True
交互模式:
>>> a = 123456
>>> b = 123456
>>> a is b
False
在 Python 交互模式下以及从脚本运行时给出不同的输出。
从这个答案:
当前的实现为 -5 到 256 之间的所有整数保留一个整数对象数组,当您在该范围内创建一个 int 时,您实际上只是取回了对现有对象的引用。
所以,我希望它只a is b
返回True
range 中的整数[-5, 256]
。但这仅在交互模式下有效,而不是从脚本运行时。
问题:为什么a is b
在交互模式和从脚本运行时的行为不同?
注意:在 Python 2.7 和 Python 3 中测试