Python语言程序设计之is和==的区别

Python语言中的对象包含三要素:id、type、value,其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值。在Python语言中会用到对象之间比较,可以用==,也可以用is。但是它们的区别是什么呢?

is:判断的是a对象是否就是b对象,是通过id来判断的;is比较的是两个实例对象是不是完全相同,它们是不是同一个对象,占用的内存地址是否相同。

==:判断的是a对象的值是否和b对象的值相等,是通过value来判断的;==比较的是两个对象的内容是否相等,即内存地址可以不一样,内容一样就可以了。

In [1]: a = [1, 2, 3, 4, 5]
In [2]: b = a
In [3]: c = a.copy()

In [4]: a == b
Out[4]: True

In [5]: a is b
Out[5]: True

In [6]: a == c
Out[6]: True

In [7]: a is c
Out[7]: False

在变量和单例值之间比较时,应该使用is。目前,最常使用is的地方是判断对象是不是None。下面是推荐的写法:

a is None

判断不是None的推荐写法是:

a is not None

Leave a Reply

Your email address will not be published. Required fields are marked *