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网络编程学习笔记(10):webpy框架
Jun 09 Python
详解Python中的条件判断语句
May 14 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
Dec 19 Python
Python 字符串与二进制串的相互转换示例
Jul 23 Python
对python实现模板生成脚本的方法详解
Jan 30 Python
Python实现AI换脸功能
Apr 10 Python
python实现PDF中表格转化为Excel的方法
Jun 16 Python
Python基于yaml文件配置logging日志过程解析
Jun 23 Python
python爬虫要用到的库总结
Jul 28 Python
Python中qutip用法示例详解
Oct 02 Python
总结python多进程multiprocessing的相关知识
Jun 29 Python
Python+Tkinter制作专属图形化界面
Apr 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
codeigniter中实现一次性加载多个view的方法
2015/03/20 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
2016/03/03 PHP
PHP ob缓存以及ob函数原理实例解析
2020/11/13 PHP
javascript 时间比较实现代码
2009/10/28 Javascript
jquery插件制作教程 txtHover
2012/08/17 Javascript
js实现字符串的16进制编码不加密
2014/04/25 Javascript
浅谈Javascript数组索引
2015/07/29 Javascript
js实现简单的验证码
2015/12/25 Javascript
Javascript基础之数组的使用
2016/05/13 Javascript
vue.js入门教程之计算属性
2016/09/01 Javascript
js 去掉字符串前后空格实现代码集合
2017/03/25 Javascript
微信小程序 本地数据读取实例
2017/04/27 Javascript
vue实现微信分享朋友圈,发送朋友的示例讲解
2018/02/10 Javascript
Vue项目分环境打包的实现步骤
2018/04/02 Javascript
layer弹出层父子页面事件相互调用方法
2018/08/17 Javascript
Node.js 实现简单的无侵入式缓存框架的方法
2019/07/21 Javascript
JavaScript代码实现微博批量取消关注功能
2021/02/05 Javascript
[01:13]DOTA2群星解读国服召集令 一起说出回归的理由
2013/07/17 DOTA
pydev使用wxpython找不到路径的解决方法
2013/02/10 Python
python 开发的三种运行模式详细介绍
2017/01/18 Python
基于python的Tkinter编写登陆注册界面
2017/06/30 Python
python+opencv实现动态物体识别
2018/01/09 Python
详解Python requests 超时和重试的方法
2018/12/18 Python
Python学习笔记之图片人脸检测识别实例教程
2019/03/06 Python
Django实现微信小程序的登录验证功能并维护登录态
2019/07/04 Python
python读写csv文件并增加行列的实例代码
2019/08/01 Python
Python实现汇率转换操作
2020/05/03 Python
pip/anaconda修改镜像源,加快python模块安装速度的操作
2021/03/04 Python
英国50岁以上人群的交友网站:Ourtime
2018/03/28 全球购物
世界领先的26岁以下学生和青少年旅行预订网站:StudentUniverse
2018/07/01 全球购物
跑步、骑行和铁人三项的高性能眼镜和服装:ROKA
2018/07/06 全球购物
致全体运动员广播稿
2014/02/01 职场文书
党员公开承诺书和承诺事项
2014/03/25 职场文书
小学学雷锋活动总结
2014/04/25 职场文书
化验员岗位职责
2015/02/14 职场文书
周恩来的四个昼夜观后感
2015/06/03 职场文书