Python 判断变量是否是 None 的三种写法

代码中经常会有变量是判断否为None的判断,有三种主要的变量写法:
第一种是 if x is None ; 第二种是 if not x: ; 第三种是 if not x is None (这句这样理解更清晰 if not (x is None) ) 。如果你觉得这样写没啥区别,否N法那么你可就要小心了,种写这里面有一个坑。判断先来看一下代码:
>>> x = 1 >>> not x False >>> x = [1] >>> not x False >>> x = 0 >>> not x True >>> x = [0] >>> not x False 复制代码在python中 None,变量 False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()都相当于False ,即:
not None == not False == not == not 0 == not [] == not {} == not () 复制代码因此在使用列表的否N法时候,如果你想区分 x==[] 和 x==None 两种情况的源码库种写话, 此时 if not x:将会出现问题:
>>> x = [] >>> y = None >>> >>> x is None False >>> y is None True >>> >>> >>> not x True >>> not y True >>> >>> >>> not x is None >>> True >>> not y is None False >>> 复制代码也许你是想判断x是否为None,但是判断却把 x==[] 的情况也判断进来了,此种情况下将无法区分。变量
对于习惯于使用if not x这种写法的否N法pythoner,必须清楚x等于None,种写 False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()时对你的判断没有影响才行。
而对于 if x is 判断not None 和 if not x is None 写法,很明显前者更清晰,变量而后者有可能使读者误解为 if (not x) is 否N法None ,服务器租用因此推荐前者,同时这也是谷歌推荐的风格
结论:
if x is not None 是最好的写法,清晰,不会出现错误,以后坚持使用这种写法。
使用 if not x 这种写法的前提是:必须清楚x等于None, False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()时对你的判断没有影响才行。
香港云服务器相关文章
电脑忘记开机密码的简单解决方法(忘记密码?别担心,这里有帮助!)
摘要:随着电脑的普及,我们对密码的依赖越来越大。然而,有时我们可能会忘记电脑的开机密码,这将让我们无法正常使用电脑。幸运的是,针对这个问题,有一些简单的解决方法可以帮助我们重新访问电脑。...2025-11-05
什么是顶级域名?我们在浏览网页时,常常会看到各种各样的域名,比如“.com”、“ .org”或者“.cn”,这些域名的后缀就是所谓的顶级域名TLD)。那么,顶级域名究竟是什么,它们又有哪些类型呢?顶级2025-11-05
前言当我们用 navicat、mysql workbench 等mysql 的客户端执行一条sql语句后,我们就能得到相应的结果。例如:那么这个过程发生了什么呢?执行一条sql 就是一次Rpc的调用m2025-11-05
阿里二面:RocketMQ同一个消费组内的消费者订阅量不同tag,会有问题吗?
面试官:同一个消费组内的消费者,如果订阅了相同的 topic,但是订阅的 tag 不一样,会有什么问题吗?我:会出现丢消息的情况。面试官:能详细说一说吗?我:RocketMQ 要求同一个消费组内的消费2025-11-05电脑睡眠后出现错误的解决方法(修复电脑睡眠后出现错误的实用指南)
摘要:电脑睡眠是一种省电模式,使电脑在一段不使用时进入休眠状态,以节约能源。然而,有时电脑在睡眠后会出现各种错误,如无法唤醒、丢失数据或程序崩溃等。本文将为您介绍解决电脑睡眠错误的方法。...2025-11-05
Java程序员如何通过 ElasticSearch 构建极致的搜索体验?
搜索引擎在任何人的日常生活和工作中都承担着很重要的角色,说到搜索大家想到的最多可能就是百度,谷歌,必应等搜索引擎。这些确实是 PC 互联网时代的搜索先锋,但是现在移动互联网时代搜索已经很普及了,各大应2025-11-05

最新评论