python判断是空的实例分享


Posted in Python onJuly 06, 2020

在实际的工作当中,我们难免要与空值打交道,相信不少初学者都会写出下面的代码:

if a is None:
    do something.else:
    do the other thing.

这样写看起来不错,但实际上会有问题。一般来讲,Python中会把下面几种情况当做空值来处理:

None
False
0,0.0,0L
'',(),[],{}

其中None的特殊之处在于,它既不是数值0,也不是某个数据结构的空值,它本身就是一个空值对象。它的类型是NoneType,它遵循单

例模式,也就是说,在同一命名空间下的所有None其实质上都是同一个空值对象。

>>> id(None)
1795884240
>>> None == 0
False
>>> None == ''
False
>>> a = None
>>> id(a)
1795884240
>>> a == None
True

上面的判断显然不符合我们的期望:只有当a被显示赋值为None的情况下,a==None才为True。

那么,对于Python中更为广义的None值判断,我们应该怎么做呢?

>>> a = ''    #这里仅以空字符串为例,其他空值同样适用
>>> if a:
...        print 'a is not empty'
...    else:
...        print 'a is a empty string'
'a is a empty string.'

可以看出,if a的判断方式得出了我们想要的结果,那么if a的判断方式究竟是一个怎样的过程呢?

if a会首先去调用a的__nonzero__()去判断a是否为空,并返回True/False,若一个对象没有定义__nonzero__(),就去调用它的__len__()来

进行判断(这里返回值为0代表空),若某一对象没有定义以上两种方法,则if a的结果永远为True

接下来验证一下上面的说法:

>>>class A(object):
...        def __nonzero__(self):
...            print 'running on the __nonzero__'
...            return True
>>>class B(object):
...        def __len__(self):
...            print 'running on the __len__'
...            return False
>>> a, b = A(), B()
>>>if a:
...        print 'Yep'
...    else:
...        print 'Nop'
running on the __nonzero__
Yep
>>>if b:
...        print 'Yep'
...    else:
...        print 'Nop'
running on the __len__
Nop

内容扩展:

如何判断python函数返回的是否是空

我不知道你这里的空是什bai么意思 是None还是‘'

我都都给你du讲讲:

None是一zhi个空dao的对象,代表什么都没有。

而'',是一个字符串对象,代表一个空的字符串

如果返回值是None,你就用 if None:判断

如果返回‘',你就用if len(‘') == 0:判断

网友分享:

可以直接bai把函数放到if后面当du作条件,如果为空的话zhi判断结果dao是false,例如:

def test():
    return None
     
if test():
    print True
else:
    print False

到此这篇关于python判断是空的实例分享的文章就介绍到这了,更多相关python怎么判断是空的内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现的二叉树算法和kmp算法实例
Apr 25 Python
Python常用正则表达式符号浅析
Aug 13 Python
python将文本转换成图片输出的方法
Apr 28 Python
Python WXPY实现微信监控报警功能的代码
Oct 20 Python
PyQt5每天必学之创建窗口居中效果
Apr 19 Python
win7 x64系统中安装Scrapy的方法
Nov 18 Python
python 中如何获取列表的索引
Jul 02 Python
Tornado实现多进程/多线程的HTTP服务详解
Jul 25 Python
Python中random模块常用方法的使用教程
Oct 04 Python
Python 内置函数速查表一览
Jun 02 Python
一篇文章搞懂python混乱的切换操作与优雅的推导式
Aug 23 Python
C3 线性化算法与 MRO之Python中的多继承
Oct 05 Python
python三引号如何输入
Jul 06 #Python
如何验证python安装成功
Jul 06 #Python
使用Keras训练好的.h5模型来测试一个实例
Jul 06 #Python
Keras实现DenseNet结构操作
Jul 06 #Python
基于Python和C++实现删除链表的节点
Jul 06 #Python
基于Python 的语音重采样函数解析
Jul 06 #Python
python interpolate插值实例
Jul 06 #Python
You might like
全国FM电台频率大全 - 8 黑龙江省
2020/03/11 无线电
php 中文字符入库或显示乱码问题的解决方法
2010/04/12 PHP
paypal即时到账php实现代码
2010/11/28 PHP
PHP实现把文本中的URL转换为链接的auolink()函数分享
2014/07/29 PHP
Yii基于CActiveForm的Ajax数据验证用法示例
2016/07/14 PHP
jquery的键盘事件修改代码
2011/02/24 Javascript
JavaScript高级程序设计 阅读笔记(二十一) JavaScript中的XML
2012/09/14 Javascript
解析Javascript中难以理解的11个问题
2013/12/09 Javascript
对比分析AngularJS中的$http.post与jQuery.post的区别
2015/02/27 Javascript
全面了解JavaScirpt 的垃圾(garbage collection)回收机制
2016/07/11 Javascript
Angular中实现树形结构视图实例代码
2017/05/05 Javascript
javascript实现Java中的Map对象功能的实例详解
2017/08/21 Javascript
解决vue-router在同一个路由下切换,取不到变化的路由参数问题
2018/09/01 Javascript
Vue中使用ElementUI使用第三方图标库iconfont的示例
2018/10/11 Javascript
react-native聊天室|RN版聊天App仿微信实例|RN仿微信界面
2019/11/12 Javascript
JavaScript实现浏览器网页自动滚动并点击的示例代码
2020/12/05 Javascript
[50:34]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[01:51]2018年度CS GO最具人气外援-完美盛典
2018/12/16 DOTA
一个月入门Python爬虫学习,轻松爬取大规模数据
2018/01/03 Python
Python实现银行账户资金交易管理系统
2020/01/03 Python
Python接口测试文件上传实例解析
2020/05/22 Python
Python使用eval函数执行动态标表达式过程详解
2020/10/17 Python
如何用python批量调整视频声音
2020/12/22 Python
通过一张图教会你CSS3倒影的实现
2017/09/26 HTML / CSS
Expedia印度尼西亚站:预订酒店、廉价航班和度假套餐
2018/01/31 全球购物
Yahoo的PHP面试题
2014/05/26 面试题
介绍一下linux的文件权限
2014/07/20 面试题
车间副主任岗位职责
2013/12/24 职场文书
英语简历自我评价
2014/01/26 职场文书
合作意向书格式及范文
2014/03/31 职场文书
幼儿园大班毕业教师寄语
2014/04/03 职场文书
党员“一帮一”活动总结
2015/05/07 职场文书
呼啸山庄读书笔记
2015/06/29 职场文书
中国式结婚:司仪主持词(范文)
2019/07/25 职场文书
MySQL中utf8mb4排序规则示例
2021/08/02 MySQL
JavaScript严格模式不支持八进制的问题讲解
2021/11/07 Javascript