Python教程

python 对象的比较

本文主要是介绍python 对象的比较,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

'==' VS 'is'

== 和 is 是 Python 中对象比较常用的两种方式。简单来说,'==' 操作符比较对象之间的值是否相等,比如下面的例子,表示比较变量 a 和 b 所指向的值是否相等。

a == b

而 'is' 操作符比较的是对象的身份标识是否相等,即它们是否是同一个对象,是否指向同一个内存地址。

a = 10
b = 10

print(a==b)
# 输出
True

print(id(a))
# 输出
140730501919280

print(id(b))
# 输出
140730501919280

print(a is b)
# 输出
True

这里,首先 Python 会为 10 这个值开辟一块内存,然后变量 a 和 b 同时指向这块内存区域,即 a 和 b 都是指向 10 这个变量,因此 a 和 b 的值相等,id 也相等,a == b和a is b都返回 True。

在实际工作中,当我们比较变量时,使用'=='的次数会比'is'多得多,因为我们一般更关心两个变量的值,而不是它们内部的存储地址。但是,当我们比较一个变量与一个单例(singleton)时,通常会使用'is'。一个典型的例子,就是检查一个变量是否为 None:

if a is None:

if a is not None:

比较操作符'is'的速度效率,通常要优于'=='。因为'is'操作符不能被重载,这样,Python 就不需要去寻找程序中是否有其他地方重载了比较操作符,并去调用。执行比较操作符'is',就仅仅是比较两个变量的 ID 而已。

但是'=='操作符却不同,执行a == b相当于是去执行a.eq(b),而 Python 大部分的数据类型都会去重载__eq__这个函数,其内部的处理通常会复杂一些。比如,对于列表,__eq__函数会去遍历列表中的元素,比较它们的顺序和值是否相等。

这篇关于python 对象的比较的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!