在 Python 中,进行数值比较时会用到 “==” 运算符,那么怎么判断两个变量的地址是否相同呢?这里会用到 “is” 关键字。

变量基本要素

Python 中,对于任意的变量都具有三个基本要素:分别是 id,type,value。其中 id 为身份标识,即唯一能识别变量的标志,type 为数据类型,value 为数据值。在定义变量之后,可以看到这几个基本要素:

>>> a = 1
>>> id(a)
1779264528
>>> type(a)
<class 'int'>
>>> a
1

== 比较运算符

“==” 主要用于判断两个对象的 value 是否相等,属于 Python 标准操作符中的比较运算符。

>>> 1 == 1
True
>>> 1 == 2
False
>>> a = 1
>>> b = 2
>>> a == b
False

is 同一性运算符

“is” 主要用来判断两个对象的身份标识,即两者的基本要素 “id”,也叫做同一性运算符。

>>> a = 1
>>> b = 1
>>> a == b
True
>>> a is b
True
>>> c = 1.0
>>> d = 1.0
>>> c == d
True
>>> c is d
False
>>> e = "abc"
>>> f = "abc"
>>> e == f
True
>>> e is f
True
>>> g = [1,2,3]
>>> h = [1,2,3]
>>> g == h
True
>>> g is h
False
>>> i = (1,2,3)
>>> j = (1,2,3)
>>> i == j
True
>>> i is j
False

从上面可以看出,“is” 同一性运算符的运行结果与 “==” 比较运算符的运算结果不同。

在 Python 中,整型对象和字符串对象是不可变对象,所以 Python 会很高效地对它们进行缓存。因此在程序上看应该创建新对象时,却并不会创建新对象,而是对它们进行缓存。

但 Python 仅缓存简单整型,因为 Python 认为在程序中这些小整型会经常被用到。而 Python 缓存的值也是有一定范围的,并且是可变的,使用时要注意。

更多推荐

Python 中 is 的使用