- 此问题在此处已有答案**:
"is" operator behaves unexpectedly with integers(11个答案)
昨天关闭。
a = "test"
b = a
c=id(a)
d=id(b)
print("a == b:",a == b)
print("a is b:",a is b)
print(id(a), id(b))
print("id(a) is id(b):",id(a) is id(b))
print("id(a) == id(b):",id(a) == id(b))
print(c, d)
print("c is d:",c is d)
print("c == d:",c == d)
- --------结果-----------
a == b:正确
a是b:正确
小行星1843
身份证(a)是身份证(b):假
标识(a)==标识(b):真的
小行星1843
c为d:假
c == d:正确
为什么id(a)是id(b)有假呢?
我希望id(a)是id(b)对
2条答案
按热度按时间wfsdck301#
is
比较对象a和b的内存地址。在您的情况下,它们是不同的,因此为false。更多:
is
关键字用于测试两个变量是否引用同一个对象。文件:https://www.w3schools.com/python/ref_keyword_is.asp
hkmswyz62#
甚至
id(a)
和id(a)
也是不同的(当与is
比较时),因为它们是int
类型的不同对象。int
只有非常小的绝对值是相同的对象:需要
int(str(...))
转换来防止Python 3.7及以上版本使用相同的int型常量。id
的结果通常是较大的int
:说 o1 和 o2 是不同的对象,我的意思是它们没有存储在相同的内存地址。