zoukankan      html  css  js  c++  java
  • 'is' in Python

      在Python中应该避免将“is”运算符用于比较 像“数值”和“字符串”这种不可变的值。由于Python内部操作这些对象的方式,使得对这些对象使用“is”运算符的结果将是不可预测的。

      下面以两个例子加以说明:

    # DEMO 1:
    x = y = [1, 2, 3]
    z = [1, 2, 3]
    
    print("'x == y' gets ", x == y)
    print("'x == z' gets ", x == z)
    
    print("'x is y' gets ", x is y)
    print("'x is z' gets ", x is z)
    
    
    # DEMO 2:
    a = b = 'hello'
    c = 'hello'
    
    print("'a == b' gets ", a == b)
    print("'a == c' gets ", a == c)
    
    print("'a is b' gets ", a is b)
    print("'a is c' gets ", a is c)

      DEMO 1的结果没有问题:

    'x == y' gets  True
    'x == z' gets  True
    'x is y' gets  True
    'x is z' gets  False

      对于DEMO 2的结果:

    'a == b' gets  True
    'a == c' gets  True
    'a is b' gets  True
    'a is c' gets  True

      对于DEMO 2的结果,我们能够理解出现这一结果的原因('hello'是一个字符串常量并且不可改变的,当定义第二个

    字符串常量时,由于其与第一个常量值相同,所以 Python不会再次申请一段空间用于存储这一字符串常量--因为这个字符

    串常量不会改变,而是直接使用前面已经定义过的字符串常量;因此后来定义的c和先前定义的a,b其实都是同一对象)。

    但是,这和我们使用is的本意可能并不一致,所以,在Python中应该避免将“is”运算符用于比较 像“数值”和“字符串”

    这种不可变的值。

  • 相关阅读:
    【总结整理】javascript的函数在if中调用时是否加括号---与.net的不同之处
    【总结整理】javascript的函数调用时是否加括号
    【总结整理】JavaScript的DOM事件学习(慕课网)
    关于overflow:hidden (转)
    CSS
    HTML
    jQuery
    函数
    装饰器
    python的条件与循环1
  • 原文地址:https://www.cnblogs.com/lxw0109/p/is_in_python.html
Copyright © 2011-2022 走看看