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进程的信号通讯
Apr 09 Python
Python+Wordpress制作小说站
Apr 14 Python
python 分离文件名和路径以及分离文件名和后缀的方法
Oct 21 Python
python对html过滤处理的方法
Oct 21 Python
解决python3 pika之连接断开的问题
Dec 18 Python
Python实现K折交叉验证法的方法步骤
Jul 11 Python
python单例模式的多种实现方法
Jul 26 Python
python 控制台单行刷新,多行刷新实例
Feb 19 Python
Python发起请求提示UnicodeEncodeError错误代码解决方法
Apr 21 Python
Python容器类型公共方法总结
Aug 19 Python
PyQt5爬取12306车票信息程序的实现
May 14 Python
python turtle绘制多边形和跳跃和改变速度特效
Mar 16 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
第1次亲密接触PHP5(1)
2006/10/09 PHP
php产生随机数的两种方法实例代码 输出随机IP
2011/04/08 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
2017/04/05 PHP
js确定对象类型方法
2012/03/30 Javascript
JavaScript动态改变HTML页面元素例如添加或删除
2014/08/10 Javascript
js实现可得到不同颜色值的颜色选择器实例
2015/02/28 Javascript
JavaScript输出当前时间Unix时间戳的方法
2015/04/06 Javascript
JS给Textarea文本框添加行号的方法
2015/08/20 Javascript
bootstrap daterangepicker双日历时间段选择控件详解
2017/06/15 Javascript
JS实现评价的星星功能
2017/08/20 Javascript
[00:50]深扒TI7聊天轮盘语音出处6
2017/05/11 DOTA
python简单鼠标自动点击某区域的实例
2019/06/25 Python
python 实现生成均匀分布的点
2019/12/05 Python
关于windows下Tensorflow和pytorch安装教程
2020/02/04 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
2020/03/09 Python
Made in Design意大利:现代家具、名家灯具和装饰
2020/10/27 全球购物
this关键字的含义
2015/04/08 面试题
Linux内核产生并发的原因
2012/07/13 面试题
机电专业大学生求职信
2013/10/04 职场文书
幼儿园毕业家长感言
2014/02/10 职场文书
社会学专业求职信
2014/02/24 职场文书
新学期国旗下演讲稿
2014/05/08 职场文书
计算机网络专业求职信
2014/06/05 职场文书
公司董事长岗位职责
2014/06/08 职场文书
2014年政务公开工作总结
2014/12/09 职场文书
2015年护士节活动总结
2015/02/10 职场文书
高中生自我评价范文2015
2015/03/03 职场文书
幼儿园教学工作总结2015
2015/05/12 职场文书
运动会3000米加油稿
2015/07/21 职场文书
《抽屉原理》教学反思
2016/02/20 职场文书
2019年最新版见习人员管理制度!
2019/07/08 职场文书
创业计划书之零食店(进口)
2019/09/24 职场文书
MySQL系列之开篇 MySQL关系型数据库基础概念
2021/07/02 MySQL
Python实战之大鱼吃小鱼游戏的实现
2022/04/01 Python
20180830晚上第一届KSL半决赛 雨神vs解冻(二龙 三炮解说)
2022/04/01 星际争霸
Python first-order-model实现让照片动起来
2022/06/25 Python