学习Python身份运算符以及“==”和“IS”运算符之间的区别
本文主要旨在解释 python 中的一个重要运算符(“IDENTITY OPERATOR”)以及恒等运算符有何不同(is、is not ) 来自比较运算符 (==)
。
身份运营商
恒等运算符(“is ”
和 “is not ”
)用于比较对象的内存位置。当在内存中创建对象时,会为该对象分配唯一的内存地址。
‘==’
比较两个对象值是否相同。‘is’
比较两个对象是否属于同一内存位置。
创建三个字符串对象 Name、Name1 和 Name2。字符串对象Name和Name2将持有相同的值,Name1将持有不同的值。
当我们创建这些对象时,幕后发生的事情是,该对象将在内存中创建,并且在程序的生命周期内可用。
现在您可以使用比较运算符“==”
来检查两个对象值是否相同。比较运算符的输出将是布尔值(True 或 False)。
现在您已经比较了两个值以确定是否相等,让我们看一下恒等运算符的工作原理。
内置的Id()
函数用于获取对象的“身份”。一个整数,在对象的生命周期内是唯一且恒定的。
为了简单起见,请将其视为分配给您的唯一政府 ID 或 Emp ID,同样,为每个对象分配一个唯一的整数值。
现在您可以使用“is ”运算符来比较 2 个对象引用。
当我使用身份运算符比较 Name 和 Name1 或 Name2 时,它在后端所做的只是运行 “id(Name ) == id(Name2) ”
.由于id(Name)和id(Name2)都共享相同的内存位置,因此它返回True。
现在有趣的部分来了。看一下我们前面的示例,其中 Name 和 Name1 具有相同的值,并且在运行 id()
函数时返回相同的整数值。为什么您认为“Name_new”和“Name_le”对象不相同,即使它们在下面的屏幕截图中共享相同的值?
这是因为python的设计实现。当您创建范围 (-5,256) 内的整数对象和大于或等于 20 个字符的字符串对象时,不要在内存中为这些对象创建相同值的不同对象充当指向已创建对象的指针。
下面的图示将使您清楚地了解我们到目前为止在本文中所看到的内容。
概括
在本文中,我们了解了什么是身份运算符。如何使用比较运算符和恒等运算符,设计如何在内存中创建对象的实现。