python对象具有不同的id';s
我试图理解字符串比较,因为我经历了整数比较或字符比较,python比较内存中对象的id 那个么句子比较呢?它是以同样的方式进行的,若是,那个么下面的结果对象id是不同的,但结果是变为真的python对象具有不同的id';s,python,Python,我试图理解字符串比较,因为我经历了整数比较或字符比较,python比较内存中对象的id 那个么句子比较呢?它是以同样的方式进行的,若是,那个么下面的结果对象id是不同的,但结果是变为真的 a = "The Security Challenges Posed By 'Megxit'" b = "The Security Challenges Posed By 'Megxit'" print(id(a)) print(id(b)) print(a == b) 140133147022320 140
a = "The Security Challenges Posed By 'Megxit'"
b = "The Security Challenges Posed By 'Megxit'"
print(id(a))
print(id(b))
print(a == b)
140133147022320
140133147021936
True
=
用于相等比较(而不是身份比较)。要比较身份(即ID),可以使用is
:
a = "The Security Challenges Posed By 'Megxit'"
b = "The Security Challenges Posed By 'Megxit'"
print(a == b) # True
print(a is b) # False
对象ID是该对象在其生存期内的唯一整数。这也是内存中对象的地址。当你比较a和b时,你是在比较a的内容是否等于b。在你的情况下,它返回True 比较对象ID总是会给您一个False,因为它们在每个对象的生命周期中都是唯一的 您可以使用“is”来比较ID
print(a is b)
或者比较id()s
python中有两种类型的等式-
==
和is
is
的行为与您预期的比较类似-如果两个项目具有相同的id,它将返回True
。a is b
和id(a)==id(b)
之间没有区别。
只有当两个对象实际上是同一个对象时,它们才具有相同的id,这意味着它们在内存中处于相同的位置,a
和b
只是对同一对象的两个引用
当您创建两个相同的字符串时,python可能能够理解它们是相同的字符串,只创建一次,并为您提供对相同字符串的两个引用—这不是问题,因为字符串是不可变的。然而,在许多情况下,在您的情况下,即使两个对象是相同的,python也会创建两个单独的实例。在这种情况下,它们的id将不相同,但它们的内容将相同-这就是=
的用途
=
仅当对象的内容相同时才返回True
(您可以通过实现\uueq\uu
方法来覆盖它在类中的行为方式)。这就是为什么您通常希望使用=
,除非您试图找出两个变量是否实际指向同一事物,在这种情况下,use是,或者id(a)==id(b)
,高度相关:“我进行了整数比较或一个字符串比较,它比较了内存中对象的id。”不,没有。对于int
对象和str
对象,它比较的是字符串的值,而不是对象标识yfyi@juanpa.arrivillaga这让我很困惑@Fronto,坦率地说,链接似乎不太好。
print(id(a) == id(b))