python 中的is、==和cmp(),比较字符串
- ==: 用来判断两个对象的值是否相等
- is: 判断两个变量是否引用的是同一个对象,底层判断的依据是两个变量的id是否相等、
- cmp():在Python3中cmp函数被移除了。
c m p ( x , y ) = { 0 , i f x = y 负 数 , i f x < y 正 数 , i f x > y cmp(x, y) = \left\{ \begin{aligned} 0,\qquad\qquad\quad if \quad x = y \\ 负数 ,\qquad\qquad if\quad x < y \\ 正数 ,\qquad\qquad if \quad x > y \end{aligned} \right. cmp(x,y)=⎩⎪⎨⎪⎧0,ifx=y负数,ifx<y正数,ifx>y
注意: 比较数字是否相等不要用is
a = 0
b = 0
while a is b:
a += 1
b += 1
print id(a), a
print id(b), b
结果:
23105944 257
23105968 257
这个结果的原因:这实际上是当前cpython实现中的硬编码限制,解释器预先分配了从0到256的数字。所以从0到256的数字对象的不同引用a和b用is对比是True.
参考: