首页 / 知识
关于python:“ foo is None”和“ foo == None”之间是否有区别?
2023-04-13 03:36:00

Is there any difference between “foo is None” and “foo == None”?之间有什么区别:
和
我在大多数Python代码(以及我自己编写的代码)中看到的约定是前者,但是最近我遇到了使用后者的代码。 None是NoneType的一个实例(也是唯一的实例,IIRC),所以没关系,对吗? 在任何情况下都有可能吗?
如果
而 即
您可能需要阅读此对象的标识和等效信息。 语句" is"用于对象标识,它检查对象是否引用相同的实例(内存中的相同地址)。 并且'=='语句引用相等(相同值)。 请注意:
与以下内容不完全相同:
前者是布尔值测试,可以在不同的上下文中评估为false。在布尔值测试中,有很多东西代表假,例如空容器,布尔值。在这种情况下,没有人会得出错误的结论,但其他事情也会发生。
没有区别是因为相同的对象当然是相等的。但是,PEP 8明确指出您应该使用
另一方面,
@Jason:
我不喜欢使用" if foo:",除非foo真正表示一个布尔值(即0或1)。如果foo是字符串或对象或其他对象,则" if foo:"可能有效,但对我来说似乎是个懒惰的快捷方式。如果要检查x是否为None,请说"如果x为None:"。 对于"无",相等(==)和身份(is)之间不应有区别。 NoneType可能返回相等性的标识。由于None是唯一可以使用NoneType的实例(我认为这是对的),因此两个操作是相同的。对于其他类型,情况并非总是如此。例如:
这将打印"等于",因为列表具有比较操作,而不是默认返回标识。 一些更多的细节:
结果为1,
具有相同值的 例如。
而且由于
John Machin关于
由于
|
最新内容
相关内容
Python的字典排序
Python的字典排序,代码,数据,培训,字典,函数,表达式,内容,列表,排列,问题,字典是Python语言中的一种数据结构,每一个字典元素是由一对key-valupython的调用绑定方法和非绑定方法
python的调用绑定方法和非绑定方法,代码,方法,实例,第一,培训,时计,奇数,偶数,参数,定义,在Python中,如果用实例去调用方法,这种限制就被称为Pypython为何会如此流行
python为何会如此流行,代码,时间,数字,发展,技术,分析,人工智能,世纪,培训,庞大,这其中有几个原因:1.它是古老的Python早在20世纪90年代就出现对数组使用Python For循环
对数组使用Python For循环,名称,培训,代码,健康,水牛,数组,元素,有用,下面,以上,您可以使用for循环从数组中获取特定元素。假设您有一组水牛bPython的经典题目
Python的经典题目,数字,数据,公司,培训,星期六,星期,字母,水仙花,次方,偶数,1、水仙花数用python打印出100-999所有的水仙花数,所谓水仙花数是python调试的几种方式
python调试的几种方式,代码,位置,信息,状态,培训,数据,分析,变量,函数,方式,python作为一种脚本语言,很多时候我们习惯于它的简洁,习惯于它的修Python网络编程调用接收数据的三种
Python网络编程调用接收数据的三种方法,数据,代码,基础,通用,通讯,服务,网络,培训,方法,报文,最近在使用python进行网络编程开发一个通用的tcPython 3 的优点
Python 3 的优点,数据,国家,名称,对比,代码,异常,统一,培训,地方,除法,为进一步提起你的胃口,以下是Python3具备的一些优点。1.Print不再是语python的单元测试框架
python的单元测试框架,代码,生态,信息,标准,测试,分析,工具,环境,条款,活跃,1、AutotestAutotest是Google、Redhat、IBM公司联合开发的分布式入门Python的4大陷阱
入门Python的4大陷阱,代码,流程,名字,数据,培训,服务,基础,各大,对比,下来,Python以语法简单、关键字少著称,因此经常被各大媒体忽悠其是一门For循环如何在Python中工作
For循环如何在Python中工作,工作,项目,代码,培训,流程,示例,序列,语句,语法,实际,Python的for循环通过遍历数组的序列来工作。从本质上讲,它在编写一个简单的游戏来学习 Python
编写一个简单的游戏来学习 Python,数字,标准,概念,名称,异常,软件,基础知识,培训,通用,流程,通过编写一个“猜数字”游戏来探索Python(和其他