Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “为什么?”;a是b;在交互模式下以及在';是从剧本里跑出来的吗?_Python_Python 2.7_Integer_Python Interactive - Fatal编程技术网

Python “为什么?”;a是b;在交互模式下以及在';是从剧本里跑出来的吗?

Python “为什么?”;a是b;在交互模式下以及在';是从剧本里跑出来的吗?,python,python-2.7,integer,python-interactive,Python,Python 2.7,Integer,Python Interactive,在回答有关使用is关键字的问题时,我发现以下代码: 脚本: a = 123456 b = 123456 print a is b # True >>> a = 123456 >>> b = 123456 >>> a is b False 交互模式: a = 123456 b = 123456 print a is b # True >>> a = 123456 >>> b = 123456 >&

在回答有关使用
is
关键字的问题时,我发现以下代码:

脚本:

a = 123456
b = 123456
print a is b # True
>>> a = 123456
>>> b = 123456
>>> a is b
False
交互模式:

a = 123456
b = 123456
print a is b # True
>>> a = 123456
>>> b = 123456
>>> a is b
False
在Python交互模式和从脚本运行时提供不同的输出

发件人:

当前的实现为-5到256之间的所有整数保留一个整数对象数组,当您在该范围内创建一个int时,实际上只返回对现有对象的引用

因此,我希望
a是b
返回的
True
仅适用于
[-5256]
范围内的整数。但这仅在交互模式下是正确的,而不是从脚本运行时

问题:为什么
a是b
在交互模式和从脚本运行时的行为不同



注意:在Python2.7和Python3中测试

区别在于,常量是如何处理的。在交互模式下,无法判断数字常量是否已经存在。但对于编译后的代码,每个常量都会在内部保存到一个表中,并删除重复项。但这是一个实现细节,不一定对每个python版本都适用。

在python 3上的结果是相同的
False
对于交互式,而
True
对于脚本。Python 3.3的行为与2.7相同。有趣的是,
>>a=b;>>>a是b
返回
True