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实现的下载网页源码功能示例
Jun 13 Python
简单易懂的python环境安装教程
Jul 13 Python
python编程羊车门问题代码示例
Oct 25 Python
Python使用matplotlib实现的图像读取、切割裁剪功能示例
Apr 28 Python
django静态文件加载的方法
May 20 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
Jun 13 Python
简单易懂Pytorch实战实例VGG深度网络
Aug 27 Python
解决python web项目意外关闭,但占用端口的问题
Dec 17 Python
Python如何安装第三方模块
May 28 Python
Python 实现RSA加解密文本文件
Dec 30 Python
如何在Python中妥善使用进度条详解
Apr 05 Python
利用Python实时获取steam特惠游戏数据
Jun 25 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
基于AppServ,XAMPP,WAMP配置php.ini去掉警告信息(NOTICE)的方法详解
2013/05/07 PHP
PHP创建对象的六种方式实例总结
2019/06/27 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
2020/05/02 PHP
日期函数扩展类Ver0.1.1
2006/09/07 Javascript
Javascript - HTML的request类
2007/01/09 Javascript
用dtree实现树形菜单 dtree使用说明
2011/10/17 Javascript
css值转换成数值请抛弃parseInt
2011/10/24 Javascript
JavaScript中return false的用法
2015/03/12 Javascript
jQuery实现宽屏图片轮播实例教程
2015/11/24 Javascript
js密码强度检测
2016/01/07 Javascript
Bootstrap php制作动态分页标签
2016/12/23 Javascript
bootstrap fileinput 插件使用项目总结(经验)
2017/02/22 Javascript
jQuery插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
2017/04/11 jQuery
Vue实现点击时间获取时间段查询功能
2020/08/21 Javascript
JavaScript碎片—函数闭包(模拟面向对象)
2019/03/13 Javascript
layui数据表格 table.render 报错的解决方法
2019/09/29 Javascript
js String.prototype.trim字符去前后空格的扩展
2020/08/23 Javascript
深入解析Python设计模式编程中建造者模式的使用
2016/03/02 Python
Python中的os.path路径模块中的操作方法总结
2016/07/07 Python
Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)
2017/03/20 Python
利用Python操作消息队列RabbitMQ的方法教程
2017/07/19 Python
Python使用import导入本地脚本及导入模块的技巧总结
2019/08/07 Python
CSS实现的一闪而过的图片闪光效果
2014/04/23 HTML / CSS
新西兰演唱会和体育门票网站:Ticketmaster新西兰
2017/10/07 全球购物
Hudson Jeans官网:高级精制牛仔裤
2018/11/28 全球购物
英国户外装备商店:Ultimate Outdoors
2019/05/07 全球购物
美国领先的眼镜和太阳镜在线零售商:Glasses.com
2019/08/26 全球购物
Zatchels官网:英国剑桥包品牌
2021/01/12 全球购物
大二自我鉴定范文
2013/10/05 职场文书
总经理驾驶员岗位职责
2013/12/04 职场文书
会计电算化专业毕业生推荐信
2013/12/24 职场文书
学校感恩教育活动总结
2014/07/07 职场文书
婚前协议书标准版
2014/10/19 职场文书
2015年社区卫生工作总结
2015/04/21 职场文书
Python 数据可视化之Bokeh详解
2021/11/02 Python
未发现nvidia显卡怎么办?Win11系统中未检测到nvidia显卡解决教程
2022/04/08 数码科技