我正在使用PyCharm 2016.1.3社区版。
当下面的代码作为块复制到python控制台时,变量' a'和' b'是相同的对象
>>> a = 1000
b = 1000
print (a is b)
True
>>> id(a)
36079236
>>> id(b)
36079236
但在这种情况下,当逐行输入代码时,两个变量都是不同的对象
>>> a = 1000
>>> b = 1000
>>> print (a is b)
False
在第一种情况下,PyCharm在这里做了某种优化吗?
感谢您的帮助
答案 0 :(得分:1)
不,如果您将该块粘贴到文件中并运行python thefile.py
,您将看到True
,但在普通的Python控制台中,您将获得False
自行运行每一行。我的猜测是,当一个代码块被一次编译时,常见的常量被映射到同一个对象,但是当交互式解释器分别接收到这些行时,它们就不会发生。
请注意,这不是任何意义上的错误。它被称为实习,而Python用小整数(用两个替换1000和你在两种情况下都得到True
)和字符串文字也是如此。其他语言如Java也是如此。