zoukankan      html  css  js  c++  java
  • Python中is和==的区别

    通常我们写:

    1 if foo is None: pass

    这个写法与以下的写法有何区别呢?

    1 if foo == None: pass

    is当比较的是相同的对象实例时总是返回True。而==则完全决定于__eq__()方法的实现。

    例如:

    1 >>> class foo(object):
    2        def __eq__(self, other):
    3            return True
    4  
    5 >>> f = foo()
    6 >>> f == None
    7 True
    8 >>> f is None
    9 False
    Python中的对象包含三要素:id、type、value
    其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值
    is判断的是a对象是否就是b对象,是通过id来判断的
    ==判断的是a对象的值是否和b对象的值相等,是通过value来判断的
     1 >>> a = 1
     2 >>> b = 1.0
     3 >>> a is b
     4 False
     5 >>> a == b
     6 True
     7 >>> id(a)
     8 12777000
     9 >>> id(b)
    10 14986000
    11 >>> a = 1
    12 >>> b = 1
    13 >>> a is b
    14 True
    15 >>> a == b
    16 True
    17 >>> id(a)
    18 12777000
    19 >>> id(b)
    20 12777000

     

  • 相关阅读:
    打印水仙花数
    打印从1到k之间的所有素数
    Fibonacci数列小程序
    Fibonacci数
    水仙花数
    猴子吃桃问题
    5个数求最值—南阳acm
    三个数从小到大排序—南阳acm
    南阳acm奇偶数分离
    find the safest road--hdu1596
  • 原文地址:https://www.cnblogs.com/mmix2009/p/3220954.html
Copyright © 2011-2022 走看看