了解Python的“ is”运算符

发布于 2021-02-02 23:22:31

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

到底是什么意思

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

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

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

print x is y #It prints false!
关注者
0
被浏览
84
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    您误解了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告诉您两个名称是否指向一个相同的对象。==告诉您两个名称是否引用具有相同值的对象。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看