python对象具有不同的id';s

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

我试图理解字符串比较,因为我经历了整数比较或字符比较,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
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))