Python中is和not是两个关键字,而is not的组合可以看作又一个关键字,不可以将其看作是两个关键字的简单堆砌。
1. “is” keyword
is关键字的作用是判断两个变量是否指向同一对象,指向同一对象的意思是,两个变量在内存中指向同一块地址。
a is b等价于id(a) == id(b),这里函数id()的作用是返回变量的内存地址。
>>> a = 123 >>> b = 123 >>> a is b True >>> id(a) 4944 >>> id(b) 4944 >>> a = [1, 2, 3] >>> b = [1, 2, 3] >>> a is b False >>> id(a) 28 >>> id(b) 32 >>> c = a >>> c [1, 2, 3] >>> a is c True >>> id(c) 28
讯享网
2. “not” keyword
not关键字的作用是对一个对象进行逻辑取反。
讯享网>>> not 123 False >>> not [1, 2, 3] False >>> not 0 True >>> not None True
值得一提的是,Python在判断一个对象的逻辑真假时,有一个 Truth Value Testing 的概念,在这里规定了如何定义一个对象的逻辑真假。

简单来说,如果一个对象:(1)内置了__bool__()方法,且返回False,或(2)内置了__len__()方法,且返回0,则在逻辑上将其视为假,否则视为真。

由此可知,以下对象均为逻辑假,使用bool()函数测试结果均为False(直接抄文档了):
- constants defined to be false:
NoneandFalse. - zero of any numeric type:
0,0.0,0j,Decimal(0),Fraction(0, 1) - empty sequences and collections:
'',(),[],{},set(),range(0)
同样地,使用not关键字测试上面的对象,结果均为True。
3. “is not” keyword
is not实际上是一个比较运算符,用于判断对象是否不一致。(同样地,前面的is也是比较运算符,用于判断对象是否一致。)
is not不应该被拆开来理解,而应视作一个整体,即:a is not b的优先级不是a is (not b),而是a (is not) b。
>>> a = 123 >>> a is not None True >>> a is (not None) False >>> bool(a) is (not None) True
在官方文档中,对此的说明概括成了短短三句话:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/23003.html