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代码的打包与发布详解
Jul 30 Python
Python实现批量下载图片的方法
Jul 08 Python
Python selenium 三种等待方式解读
Sep 15 Python
django rest framework之请求与响应(详解)
Nov 06 Python
python机器学习库常用汇总
Nov 15 Python
python如何统计序列中元素
Jul 31 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
Aug 30 Python
numpy中三维数组中加入元素后的位置详解
Nov 28 Python
Tensorflow中批量读取数据的案列分析及TFRecord文件的打包与读取
Jun 30 Python
Python实现扫码工具的示例代码
Oct 09 Python
如何在windows下安装配置python工具Ulipad
Oct 27 Python
Pycharm创建python文件自动添加日期作者等信息(步骤详解)
Feb 03 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实现下载功能的代码
2012/09/29 PHP
JavaScript 判断浏览器类型及版本
2009/02/21 Javascript
jQuery 入门级学习笔记及源码
2010/01/22 Javascript
实现无刷新联动例子汇总
2015/05/20 Javascript
JS响应鼠标点击实现两个滑块区间拖动效果
2015/10/26 Javascript
理解JavaScript中worker事件api
2015/12/25 Javascript
AngularJS中使用HTML5手机摄像头拍照
2016/02/22 Javascript
js滚轮事件兼容性问题需要注意哪些
2016/11/15 Javascript
微信小程序中使用javascript 回调函数
2017/05/11 Javascript
jQuery使用ajax_动力节点Java学院整理
2017/07/05 jQuery
JavaScript学习笔记之惰性函数示例详解
2017/08/27 Javascript
详解vue配置后台接口方式
2019/03/29 Javascript
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
2019/06/04 Javascript
[49:07]VGJ.T vs Optic Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
python实现搜索指定目录下文件及文件内搜索指定关键词的方法
2015/06/28 Python
Python编程求质数实例代码
2018/01/31 Python
python实现在遍历列表时,直接对dict元素增加字段的方法
2019/01/15 Python
Python3最长回文子串算法示例
2019/03/04 Python
关于python中密码加盐的学习体会小结
2019/07/15 Python
python正则-re的用法详解
2019/07/28 Python
python-opencv获取二值图像轮廓及中心点坐标的代码
2019/08/27 Python
阿里云ECS服务器部署django的方法
2019/08/29 Python
python生成器推导式用法简单示例
2019/10/08 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
2019/12/18 Python
Python网页解析器使用实例详解
2020/05/30 Python
python中可以声明变量类型吗
2020/06/18 Python
size?爱尔兰官方网站:英国伦敦的球鞋精品店
2019/03/31 全球购物
《找不到快乐的波斯猫》教学反思
2014/02/24 职场文书
一帮一活动总结
2014/05/08 职场文书
公司运动会策划方案
2014/05/25 职场文书
材料成型及控制工程专业求职信
2014/06/19 职场文书
品牌推广活动策划方案
2014/08/19 职场文书
研修心得体会
2014/09/04 职场文书
Nginx配置之禁止指定IP访问
2022/05/02 Servers
VUE解决跨域问题Access to XMLHttpRequest at
2022/05/06 Vue.js
详解apache编译安装httpd-2.4.54及三种风格的init程序特点和区别
2022/07/15 Servers