我正在使用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会在这里进行某种优化吗?
谢谢你的帮助
发布于 2016-05-17 18:26:47
不,如果您将该块粘贴到文件中并运行python thefile.py,您将看到True,但在普通的Python控制台中,您将从单独运行每一行中获得False。我的猜测是,当一段代码被一次编译时,公共常量被映射到同一个对象,这种情况不会发生,而是当交互式解释器单独接收行时。
请注意,这在任何意义上都不是一个bug。它被称为interning,Python使用小整数(用5替换1000,在这两种情况下都会得到True )和字符串文本来完成它。其他语言(如Java )也会这样做。
https://stackoverflow.com/questions/37282394
复制相似问题