【发布时间】:2021-12-03 22:55:18
【问题描述】:
我是 Python 新手,所以我的问题似乎很明显。但是根据 W3Schools 的说法,如果两个变量引用同一个对象,则它们仅在“is”运算符下是相同的。所以我的问题是,为什么跟随返回 True?我以为 Python 会为它们创建两个单独的内存位置?
a = 500
b = 500
print(a == b) # True
print(a is b) # True, why is this true?
【问题讨论】:
-
很可能有一个常量池用于存放文字。尝试运行一个循环,在某些时候,
is测试将返回 false。 -
这能回答你的问题吗? Is there a difference between "==" and "is"?
-
在许多语言中,Int 是值变量而不是引用变量。我想是这样的
-
CPython 以实习小整数而闻名,但那是从 -5 到 256 iirc。所以如果你做
x = 255; x is 255,你会得到True,但如果你做x = 1000; x is 1000,你会得到False。很可能在同一个表达式中,CPython 将整数重用于相同的文字。这种实现的怪异之处就是为什么警告您对某些不可变的文字执行==而不是is的原因。不可变对象的有效标识是它们的值,所以使用==。
标签: python