【发布时间】:2020-01-21 02:08:12
【问题描述】:
Instagram 上有this 的帖子,作者说如果num3 和num4 设置为257 并且num3 is num4 被评估,你应该得到False。
我已经修改了添加一些条件的代码,但我得到了True。我看到直到 256 的整数被分配了相同的内存桶以获得相同的值,但不是 257 以后的整数。那么发生了什么?
num1 = 256
num2 = 256
if num1 == num2:
print(True)
num3 = 257
num4 = 257
if num3 == num4:
print(True)
if num3 is num4:
print(True)
else:
print(False)
【问题讨论】:
-
257完全等于257。不太清楚为什么人们会不这么认为。 -
试试 python3 REPL。输入 num3=257,然后输入 num4=257。然后键入 num3 is num4 可以看到结果为 False。现在,运行 OPs 程序并注意
if num3 is num4返回True。解释这将有助于OP的答案。 -
是的,这是一个很好的观点@mkrieger1。从描述看来,OP 想要了解
==和is对 256 和 257 的比较。我觉得有趣的是,REPL 给出了与 OPs 程序不同的结果。
标签: python python-3.x int python-internals