2025年Python中is、not、is not的区别

Python中is、not、is not的区别Python 中 is 和 not 是两个关键字 而 is not 的组合可以看作又一个关键字 不可以将其看作是两个关键字的简单堆砌 1 is keyword is 关键字的作用是判断两个变量是否指向同一对象 指向同一对象的意思是 两个变量在内存中指向同一块地址 a is b 等价于 id a

大家好,我是讯享网,很高兴认识大家。

Python中isnot是两个关键字,而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: None and False.
  • 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 

在官方文档中,对此的说明概括成了短短三句话:

在这里插入图片描述

小讯
上一篇 2025-03-10 15:39
下一篇 2025-03-22 13:24

相关推荐

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