Python判断变量是否是None写法代码实例


Posted in Python onOctober 09, 2020

代码中经常会有变量是否为None的判断,有三种主要的写法:

  • 第一种是`if x is None`;
  • 第二种是 `if not x:`;
  • 第三种是`if not x is None`(这句这样理解更清晰`if not (x is None)`) 。

如果你觉得这样写没啥区别,那么你可就要小心了,这里面有一个坑。先来看一下代码:

>>> x = 1
>>> not x
False
>>> x = [1]
>>> not x
False
>>> x = 0
>>> not x
True
>>> x = [0]   # You don't want to fall in this one.
>>> not x
False

在python中 None, False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()都相当于False ,即:

not None == not False == not '' == not 0 == not [] == not {} == not ()

因此在使用列表的时候,如果你想区分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这种写法的pythoner,必须清楚x等于None, False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()时对你的判断没有影响才行。

而对于`if x is not None`和`if not x is None`写法,很明显前者更清晰,而后者有可能使读者误解为`if (not x) is None`,因此推荐前者,同时这也是谷歌推荐的风格

结论:

`if x is not None`是最好的写法,清晰,不会出现错误,以后坚持使用这种写法。

使用if not x这种写法的前提是:必须清楚x等于None, False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()时对你的判断没有影响才行。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现的下载8000首儿歌的代码分享
Nov 21 Python
利用python批量检查网站的可用性
Sep 09 Python
Python数据结构与算法之二叉树结构定义与遍历方法详解
Dec 12 Python
python数据批量写入ScrolledText的优化方法
Oct 11 Python
python变量的存储原理详解
Jul 10 Python
pytorch模型预测结果与ndarray互转方式
Jan 15 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
Feb 18 Python
解决Opencv+Python cv2.imshow闪退问题
Apr 24 Python
Python使用Chrome插件实现爬虫过程图解
Jun 09 Python
Python钉钉报警及Zabbix集成钉钉报警的示例代码
Aug 17 Python
python获取时间戳的实现示例(10位和13位)
Sep 23 Python
python中pop()函数的语法与实例
Dec 01 Python
Python尾递归优化实现代码及原理详解
Oct 09 #Python
Python hashlib模块的使用示例
Oct 09 #Python
浅析Python requests 模块
Oct 09 #Python
Python特殊属性property原理及使用方法解析
Oct 09 #Python
python GUI计算器的实现
Oct 09 #Python
Numpy实现卷积神经网络(CNN)的示例
Oct 09 #Python
Python使用socket_TCP实现小文件下载功能
Oct 09 #Python
You might like
DC动画很好看?新作烂得令人发指,名叫《红色之子》
2020/04/09 欧美动漫
动态网站web开发 PHP、ASP还是ASP.NET
2006/10/09 PHP
PHP chmod 函数与批量修改文件目录权限
2010/05/10 PHP
php如何控制用户对图片的访问 PHP禁止图片盗链
2016/03/25 PHP
PHP设计模式之原型设计模式原理与用法分析
2018/04/25 PHP
JavaScript入门教程(5) js Screen屏幕对象
2009/01/31 Javascript
javascript中apply和call方法的作用及区别说明
2014/02/14 Javascript
jQuery+ajax实现鼠标单击修改内容的思路
2014/06/29 Javascript
JS实现仿新浪黄色经典滑动门效果代码
2015/09/27 Javascript
详解JS面向对象编程
2016/01/24 Javascript
javascript实现任务栏消息提示的简单实例
2016/05/31 Javascript
input框中的name和id的区别
2016/11/16 Javascript
javaScript中定义类或对象的五种方式总结
2016/12/04 Javascript
jQuery 插件实现随机自由弹跳气泡样式
2017/01/12 Javascript
Angular在一个页面中使用两个ng-app的方法
2017/02/20 Javascript
JavaScript数据结构之二叉树的查找算法示例
2017/04/13 Javascript
深入理解Angular中的依赖注入
2017/06/26 Javascript
提高Node.js性能的应用技巧分享
2017/08/10 Javascript
Windows下使用Nodejs运行js的方法
2017/09/02 NodeJs
Vue2.5 结合 Element UI 之 Table 和 Pagination 组件实现分页功能
2018/01/26 Javascript
解决vue打包之后静态资源图片失效的问题
2018/02/21 Javascript
vue axios整合使用全攻略
2018/05/24 Javascript
react的滑动图片验证码组件的示例代码
2019/02/27 Javascript
Python获取当前时间的方法
2014/01/14 Python
用Python中的字典来处理索引统计的方法
2015/05/05 Python
Django 解决开发自定义抛出异常的问题
2020/05/21 Python
python语言中有算法吗
2020/06/16 Python
python 实现两个npy档案合并
2020/07/01 Python
墨西哥网上购物:Linio墨西哥
2016/10/20 全球购物
接口中的方法可以是abstract的吗
2015/07/23 面试题
自荐信怎么写好
2013/11/11 职场文书
打架检讨书800字
2014/01/10 职场文书
运动会致辞稿50字
2014/02/04 职场文书
大学生新学期计划书
2014/04/28 职场文书
2014年自愿离婚协议书
2014/10/10 职场文书
2019年12月24日平安夜祝福语集锦
2019/12/24 职场文书