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基于pygame实现的弹力球效果(附源码)
Nov 11 Python
TensorFlow神经网络优化策略学习
Mar 09 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
Apr 25 Python
python3 中文乱码与默认编码格式设定方法
Oct 31 Python
Python 调用 Outlook 发送邮件过程解析
Aug 08 Python
python中的数组赋值与拷贝的区别详解
Nov 26 Python
python数据库编程 ODBC方式实现通讯录
Mar 27 Python
Python中使用filter过滤列表的一个小技巧分享
May 02 Python
Python爬虫实现百度翻译功能过程详解
May 29 Python
python如何快速拼接字符串
Oct 28 Python
利用python实时刷新基金估值(摸鱼小工具)
Sep 15 Python
Python实现老照片修复之上色小技巧
Oct 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
PHP基础知识回顾
2012/08/16 PHP
php中获取主机名、协议及IP地址的方法
2014/11/18 PHP
基于PHP常用文件函数和目录函数整理
2017/08/17 PHP
解决表单中第一个非隐藏的元素获得焦点的一个方案
2009/10/26 Javascript
给ListBox添加双击事件示例代码
2013/12/02 Javascript
jquery遍历checkbox的注意事项说明
2014/02/21 Javascript
jquery实现在页面加载的时自动为日期插件添加当前日期
2014/08/20 Javascript
jQuery事件用法实例汇总
2014/08/29 Javascript
jQuery检测返回值的数据类型
2015/07/13 Javascript
JS实现淡蓝色简洁竖向Tab点击切换效果
2015/10/06 Javascript
Nodejs实战心得之eventproxy模块控制并发
2015/10/27 NodeJs
jqueryMobile使用示例分享
2016/01/12 Javascript
jQuery表单验证简单示例
2016/10/17 Javascript
angular中的http拦截器Interceptors的实现
2017/02/21 Javascript
JQ中$(window).load和$(document).ready区别与执行顺序
2017/03/01 Javascript
浅谈Node.js轻量级Web框架Express4.x使用指南
2017/05/03 Javascript
详解Vue路由开启keep-alive时的注意点
2017/06/20 Javascript
vue删除html内容的标签样式实例
2018/09/13 Javascript
JavaScript实现连连看连线算法
2019/01/05 Javascript
使用layui监听器监听select下拉框,事件绑定不成功的解决方法
2019/09/28 Javascript
微信小程序scroll-view的滚动条设置实现
2020/03/02 Javascript
vue抽出组件并传值实例
2020/07/31 Javascript
Vue中keep-alive组件的深入理解
2020/08/23 Javascript
Python pickle模块用法实例分析
2015/05/27 Python
python实现基于朴素贝叶斯的垃圾分类算法
2019/07/09 Python
python中selenium操作下拉滚动条的几种方法汇总
2019/07/14 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
2019/08/16 Python
Python 中的 import 机制之实现远程导入模块
2019/10/29 Python
Python解释器以及PyCharm的安装教程图文详解
2020/02/26 Python
Python转换字典成为对象,可以用"."方式访问对象属性实例
2020/05/11 Python
python使用布隆过滤器的实现示例
2020/08/20 Python
加拿大最大的相机店:Henry’s
2017/05/17 全球购物
秘书岗位职责
2013/11/18 职场文书
小区门卫管理制度
2014/01/29 职场文书
公司员工离职感言
2015/08/03 职场文书
创业计划书之花店
2019/09/20 职场文书