【发布时间】:2019-01-07 08:57:48
【问题描述】:
我创建了两个相同的元组并在它们上使用 is 运算符,应该得到的答案是错误的,但是当我在 vscode/atom/notepadd++ 中使用它时它会实现,但是当我在 pthon 中使用相同的代码通过 cmd 运行时它会变成错误
a = (1,2,3)
b = (1,2,3)
print(a is b)
实际结果应该是错误的,当我通过 cmd 或一些在线 python 编译器使用 python 时它是错误的,但是当我使用 vscode 编写上述代码并创建一个 .py 文件时它实现了。下图是我想说的。
我在 vscode 中的代码通过终端直接在终端中执行:
【问题讨论】:
-
CPython 默认不承诺实习不可变对象(字符串/元组),但实际上,Python 代码库中的很多地方确实重用了已创建的对象。这就是如果您检查这些小对象的 id 是否相同的原因。
-
IDE 正在使用哪个 Python?你自己用的是同一个吗?由于整数元组是完全不可变的,我可以看到其他版本的 Python 对对象进行了实习,导致它们具有相同的 id。不过,我不希望 CPython 出现这种情况——在您拍摄的图片中查看版本字符串的其余部分会很有帮助。
-
例如,PyPy 将实习元组,至少在针对脚本而不是交互运行时。
-
我使用的是 python 3.7。当代码用 ide 编写但使用终端执行时
标签: python python-3.x