在python中a='test',b='test'。print(a is b) true, print(id(a) == id(b)) true, print(id(a) is id(b))

  • 本文关键字:id print true test is python python python-3.x
  • 更新时间 :
  • 英文 :

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: True
a is b: True
1843108275696 1843108275696
id(a) == id(b): True
1843108275696
c is d: False
1843108275696
c == d: True
c == d: True

为什么id(a)是id(b)有假?
我期望id(a)是id(b) True

is比较对象a和b的内存地址。它们在你的情况下是不同的,将是假的。

更多:is关键字用于测试两个变量是否指向同一个对象。

文档:https://www.w3schools.com/python/ref_keyword_is.asp

甚至id(a)id(a)(与is相比)也是不同的,因为它们是int类型的不同对象。只有非常小的int绝对值是相同的对象:

>>> int(str(2 ** 6)) is int(str(2 ** 6))
True
>>> int(str(2 ** 16)) is int(str(2 ** 16))
False

需要int(str(...))转换以防止Python 3.7+对相同的int字面值进行实习。

id的结果通常是一个大的int:

>>> id("test")
140023900375784

01o2是不同的对象,我的意思是它们不是存储在相同的内存地址。

最新更新