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基础教程之字典操作详解
Mar 25 Python
python中字典(Dictionary)用法实例详解
May 30 Python
Python学习笔记之解析json的方法分析
Apr 21 Python
python绘制铅球的运行轨迹代码分享
Nov 14 Python
基于Python实现的ID3决策树功能示例
Jan 02 Python
使用python生成杨辉三角形的示例代码
Aug 29 Python
Python实现正则表达式匹配任意的邮箱方法
Dec 20 Python
Python企业编码生成系统之系统主要函数设计详解
Jul 26 Python
Python从入门到精通之环境搭建教程图解
Sep 26 Python
python 实现方阵的对角线遍历示例
Nov 29 Python
使用BeautifulSoup4解析XML的方法小结
Dec 07 Python
Pandas 数据编码的十种方法
Apr 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
php微信公众开发之获取周边酒店信息的方法
2014/12/22 PHP
了解PHP的返回引用和局部静态变量
2015/06/04 PHP
php插入含有特殊符号数据的处理方法
2016/11/24 PHP
PHP implode()函数用法讲解
2019/03/08 PHP
IE6下JS动态设置图片src地址问题
2010/01/08 Javascript
初窥JQuery(二) 事件机制(1)
2010/11/25 Javascript
控制页面按钮在后台执行期间不重复提交的JS方法
2013/06/24 Javascript
js导入导出excel(实例代码)
2013/11/25 Javascript
js简单实现删除记录时的提示效果
2013/12/05 Javascript
JS使用cookie设置样式的方法
2016/06/30 Javascript
原生js的RSA和AES加密解密算法
2016/10/08 Javascript
jquery实现简单的瀑布流布局
2016/12/11 Javascript
jQuery Ajax 实现在html页面实时显示用户登录状态
2016/12/30 Javascript
Ajax验证用户名或昵称是否已被注册
2017/04/05 Javascript
react-native fetch的具体使用方法
2017/11/01 Javascript
详解原生JS动态添加和删除类
2019/03/26 Javascript
原生js实现获取form表单数据代码实例
2019/03/27 Javascript
浅析Vue 中的 render 函数
2020/02/28 Javascript
Python random模块(获取随机数)常用方法和使用例子
2014/05/13 Python
python字典多条件排序方法实例
2014/06/30 Python
Python通过解析网页实现看报程序的方法
2014/08/04 Python
python字符串,数值计算
2016/10/05 Python
Python实现视频下载功能
2017/03/14 Python
基于python-opencv3的图像显示和保存操作
2019/06/27 Python
python实现ip代理池功能示例
2019/07/05 Python
使用python绘制温度变化雷达图
2019/10/18 Python
CSS3实现多背景模拟动态边框的效果
2016/11/08 HTML / CSS
全球知名巧克力品牌:Godiva
2016/07/22 全球购物
美国南部最大的家族百货公司:Belk
2017/01/30 全球购物
个人简历自我评价
2014/02/02 职场文书
大四自我鉴定
2014/02/08 职场文书
运动会标语
2014/06/21 职场文书
员工工作表现自我评价
2015/03/06 职场文书
大学班长竞选稿
2015/11/20 职场文书
yyds什么意思?90后已经听不懂00后讲话了……
2022/02/03 杂记
分布式Redis Cluster集群搭建与Redis基本用法
2022/02/24 Redis