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写入xml文件的方法
May 08 Python
python环境路径配置以及命令行运行脚本
Apr 02 Python
python导入pandas具体步骤方法
Jun 23 Python
使用selenium和pyquery爬取京东商品列表过程解析
Aug 15 Python
解决ROC曲线画出来只有一个点的问题
Feb 28 Python
python实现在线翻译
Jun 18 Python
解决django migrate报错ORA-02000: missing ALWAYS keyword
Jul 02 Python
python实现mask矩阵示例(根据列表所给元素)
Jul 30 Python
Python 高效编程技巧分享
Sep 10 Python
Python字符串查找基本操作代码案例
Oct 27 Python
python爬虫分布式获取数据的实例方法
Nov 26 Python
再谈python_tkinter弹出对话框创建
Mar 20 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
乱谈我对耳机、音箱的感受
2021/03/02 无线电
PHP判断变量是否为0的方法
2014/02/08 PHP
PHP程序漏洞产生的原因分析与防范方法说明
2014/03/06 PHP
php中curl、fsocket、file_get_content三个函数的使用比较
2014/05/09 PHP
详解WordPress中添加友情链接的方法
2016/05/21 PHP
Laravel使用RabbitMQ的方法示例
2019/06/18 PHP
jquery 学习笔记 传智博客佟老师附详细注释
2020/09/12 Javascript
jquery 双色表格实现代码
2009/12/08 Javascript
js getElementsByTagName的简写方式
2010/06/27 Javascript
JavaScript格式化数字的函数代码
2010/11/30 Javascript
如何通过javascript操作web控件的自定义属性
2013/11/25 Javascript
javascript分页代码实例分享(js分页)
2013/12/13 Javascript
JavaScript中输出标签的方法
2014/08/27 Javascript
关于angular js_$watch监控属性和对象详解
2017/04/24 Javascript
javascript防抖函数debounce详解
2019/06/11 Javascript
微信小程序JS加载esmap地图的实例详解
2019/09/04 Javascript
[01:01:31]2018DOTA2亚洲邀请赛3月29日小组赛B组 Mineski VS paiN
2018/03/30 DOTA
Python的Flask框架的简介和安装方法
2015/11/13 Python
python多进程读图提取特征存npy
2019/05/21 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
2019/08/31 Python
详解Python绘图Turtle库
2019/10/12 Python
使用Python刷淘宝喵币(低阶入门版)
2019/10/30 Python
如何将你的应用迁移到Python3的三个步骤
2019/12/22 Python
Pytorch 实现权重初始化
2019/12/31 Python
Python如何实现线程间通信
2020/07/30 Python
Html5移动端适配IphoneX等机型的方法
2019/06/25 HTML / CSS
诗狄娜化妆品官方网站:Stila Cosmetics
2016/12/21 全球购物
NICKIS.com荷兰:设计师儿童时装
2020/01/08 全球购物
园林施工员岗位职责
2013/12/11 职场文书
幼师求职自荐信范文
2014/01/26 职场文书
求职信模板标准格式范文
2014/02/23 职场文书
借款协议书
2014/04/12 职场文书
献爱心活动总结
2014/05/07 职场文书
2014年教师业务学习材料
2014/05/12 职场文书
教师节班会主持词
2015/07/06 职场文书
详解Python函数print用法
2021/06/18 Python