当前位置: 首页 > 面试题库 >

了解Python的“ is”运算符

蓬森
2023-03-14
问题内容

is运营商不匹配变量的值,但这些实例本身。

到底是什么意思

我声明了两个变量,xy在两个变量中分配了相同的值,但是当我使用is运算符时,它返回false

我需要澄清。这是我的代码

x = [1, 2, 3]
y = [1, 2, 3]

print x is y #It prints false!

问题答案:

您误解了is操作员的测试内容。它测试两个变量是否指向同一个对象,而不是两个变量具有相同的值。

is操作员文档中:

运算符is和is not对象标识测试:x is y当且仅当x和y是相同对象时,才为true

改用==运算符:

print x == y

打印True。x和y是两个不同的列表:

x[0] = 4
print(y)  # prints [1, 2, 3]
print(x == y)   # prints False

如果使用该id()函数,您将看到x并y具有不同的标识符:

>>> id(x)
4401064560
>>> id(y)
4401098192
但是如果要分配给y,x则它们都指向同一个对象:

>>> x = y
>>> id(x)
4401064560
>>> id(y)
4401064560
>>> x is y
True

is显示两者是同一个对象,则返回True

请记住,在Python中,名称仅仅是引用值的标签;您可以有多个名称指向同一个对象。is告诉您两个名称是否指向一个相同的对象。==告诉您两个名称是否引用具有相同值的对象。



 类似资料:
  • 本文向大家介绍解释==和is在Python中的运算符之间的区别。,包括了解释==和is在Python中的运算符之间的区别。的使用技巧和注意事项,需要的朋友参考一下 ==运算符 ==运算符通过检查对象值的相等性来比较操作数。 是运算符 is运算符通过检查对象是否相同来比较操作数。 示例 以下是Python中的程序以展示差异。 输出结果

  • 问题内容: 我注意到我可以使用运算符比较所有本机数据类型(整数,字符串,布尔值,浮点数等),还可以比较包含本机数据类型的列表,元组,集合和字典。在这些情况下,操作员将检查两个对象是否相等。但是在某些其他情况下(试图比较我创建的类的实例),该运算符只是检查两个变量是否引用同一对象(因此在这些情况下,该运算符等效于该运算符) 我的问题是:什么时候操作员不只是比较身份? 编辑:我正在使用Python 3

  • 问题内容: 操作员如何确定两个对象是否相同?它是如何工作的?我找不到记录。 问题答案: 从文档中: 每个对象都有一个标识,一个类型和一个值。一旦创建了对象,其身份就永远不会改变。您可能会认为它是对象在内存中的地址。“ is”运算符比较两个对象的身份;id()函数返回一个表示其身份的整数(当前实现为其地址)。 这似乎表明它在比较参数的内存地址,尽管它说“您可能将其视为对象在内存中的地址”这一事实可能

  • 问题内容: 为什么以下代码在Python中表现异常? 我正在使用Python 2.5.2。尝试使用某些不同版本的Python,Python 2.3.3似乎在99到100之间显示了上述行为。 基于以上所述,我可以假设Python是内部实现的,因此“小”整数的存储方式与大整数的存储方式不同,并且is运算符可以分辨出这种差异。为什么要泄漏抽象?当我事先不知道它们是否为数字时,比较两个任意对象以查看它们是

  • 本文向大家介绍简单了解python的一些位运算技巧,包括了简单了解python的一些位运算技巧的使用技巧和注意事项,需要的朋友参考一下 前言 位运算的性能大家想必是清楚的,效率绝对高。相信爱好源码的同学,在学习阅读源码的过程中会发现不少源码使用了位运算。但是为啥在实际编程过程中应用少呢?想必最大的原因,是较为难懂。不过,在面试的过程中,在手写代码过程中,写出一两个位运算的代码,还会让面试官眼前一亮

  • 问题内容: 将是运营商身份使用测试。 我想知道,如果运营商和函数调用任何方法,方式调用。 我有一些有趣的结帐: 考虑一下dict和…的价值 的每个后续查找都是a或随机整数。 但随着对特殊方法的文档状态 [ x 的默认实现 。()返回id(x)。 因此,有 是 只是周围的其他方式两者之间的关系,但。 我在这里和这里已经看到了许多问题)已经帮助了许多困惑的人,但是我找不到这个问题的答案。 问题答案: