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实现读取目录所有文件的文件名并保存到txt文件代码
Nov 22 Python
Python基于Tkinter的HelloWorld入门实例
Jun 17 Python
实例解析Python设计模式编程之桥接模式的运用
Mar 02 Python
python基础教程之匿名函数lambda
Jan 17 Python
使用XML库的方式,实现RPC通信的方法(推荐)
Jun 14 Python
Python日期的加减等操作的示例
Aug 15 Python
python实现list由于numpy array的转换
Apr 04 Python
python format 格式化输出方法
Jul 16 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
Jul 16 Python
python Opencv计算图像相似度过程解析
Dec 03 Python
Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示
Apr 08 Python
Django 用户登陆访问限制实例 @login_required
May 13 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
十大感人催泪爱情动漫 第一名至今不忍在看第二遍
2020/03/04 日漫
php读取msn上的用户信息类
2008/12/05 PHP
使用Apache的htaccess防止图片被盗链的解决方法
2013/04/27 PHP
PHP操作MySQL事务实例
2014/11/05 PHP
jquery获得下拉框值的代码
2011/08/13 Javascript
js操作textarea 常用方法总结
2012/12/03 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
2014/01/12 Javascript
JS文本获得焦点清除文本文字的示例代码
2014/01/13 Javascript
防止页面url缓存中ajax中post请求的处理方法
2017/10/10 Javascript
JavaScript中Object值合并方法详解
2017/12/22 Javascript
「中高级前端面试」JavaScript手写代码无敌秘籍(推荐)
2019/04/08 Javascript
JavaScript判断对象和数组的两种方法
2019/05/31 Javascript
JavaScript canvas绘制渐变颜色的矩形
2020/02/18 Javascript
js实现贪吃蛇游戏 canvas绘制地图
2020/09/09 Javascript
[01:07:57]DOTA2-DPC中国联赛 正赛 Ehome vs Magma BO3 第二场 1月19日
2021/03/11 DOTA
Python实现的数据结构与算法之链表详解
2015/04/22 Python
Python获取邮件地址的方法
2015/07/10 Python
python记录程序运行时间的三种方法
2017/07/14 Python
python select.select模块通信全过程解析
2017/09/20 Python
详解Python之unittest单元测试代码
2018/01/24 Python
Flask框架URL管理操作示例【基于@app.route】
2018/07/23 Python
Centos部署django服务nginx+uwsgi的方法
2019/01/02 Python
基于Python新建用户并产生随机密码过程解析
2019/10/08 Python
Python小程序之在图片上加入数字的代码
2019/11/26 Python
Python调用SMTP服务自动发送Email的实现步骤
2021/02/07 Python
计算机专业毕业生的自我评价
2013/11/18 职场文书
公司成立感言
2014/01/11 职场文书
管理失职检讨书范文
2015/05/05 职场文书
趣味运动会通讯稿
2015/07/18 职场文书
运动会班级前导词
2015/07/20 职场文书
文明上网主题班会
2015/08/14 职场文书
2016年学校十一国庆节活动总结
2016/04/01 职场文书
CentOS8.4安装Redis6.2.6的详细过程
2021/11/20 Redis
开机音效回归! Windows 11重新引入开机铃声
2021/11/21 数码科技
Javascript中async与await的捕捉错误详解
2022/03/03 Javascript
Python中文分词库jieba(结巴分词)详细使用介绍
2022/04/07 Python