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实现矩阵加法和乘法的方法分析
Dec 19 Python
PyTorch快速搭建神经网络及其保存提取方法详解
Apr 28 Python
Python 查找list中的某个元素的所有的下标方法
Jun 27 Python
python中int与str互转方法
Jul 02 Python
在Python中字典根据多项规则排序的方法
Jan 21 Python
Python操作qml对象过程详解
Sep 26 Python
python定间隔取点(np.linspace)的实现
Nov 27 Python
解决import tensorflow as tf 出错的原因
Apr 16 Python
Django vue前后端分离整合过程解析
Nov 20 Python
python编写扎金花小程序的实例代码
Feb 23 Python
python3读取文件指定行的三种方法
May 24 Python
Python连接Postgres/Mysql/Mongo数据库基本操作大全
Jun 29 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
php ss7.5的数据调用 (笔记)
2010/03/08 PHP
PHP下对字符串的递增运算代码
2010/08/21 PHP
推荐几个开源的微信开发项目
2014/12/28 PHP
PHP 实现类似js中alert() 提示框
2015/03/18 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
2015/12/18 PHP
Javascript中找到子元素在父元素内相对位置的代码
2012/07/21 Javascript
jQuery学习笔记 更改jQuery对象
2012/09/19 Javascript
Extjs4 类的定义和扩展实例
2013/06/28 Javascript
JavaScript模板引擎用法实例
2015/07/10 Javascript
基于JS模仿windows文件按名称排序效果
2016/06/29 Javascript
基于jQuery实现图片推拉门动画效果的两种方法
2017/08/26 jQuery
jQuery+CSS实现的table表格行列转置功能示例
2018/01/08 jQuery
JS求Number类型数组中最大元素方法
2018/04/08 Javascript
springMvc 前端用json的方式向后台传递对象数组方法
2018/08/07 Javascript
Vue 框架之动态绑定 css 样式实例分析
2018/11/14 Javascript
JavaScript中将值转换为字符串的五种方法总结
2019/06/06 Javascript
vue实现浏览器全屏展示功能
2019/11/27 Javascript
JS实现横向跑马灯效果代码
2020/04/20 Javascript
[03:01]DOTA2英雄基础教程 露娜
2014/01/07 DOTA
[01:11:15]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[02:12]Dota 2 推出全新英雄—— 电炎绝手
2019/08/23 DOTA
Python实现将数据库一键导出为Excel表格的实例
2016/12/30 Python
Python基于TCP实现会聊天的小机器人功能示例
2018/04/09 Python
Python实现的括号匹配判断功能示例
2018/08/25 Python
基于python3 pyQt5 QtDesignner实现窗口化猜数字游戏功能
2019/07/15 Python
Python shutil模块用法实例分析
2019/10/02 Python
在Python中实现函数重载的示例代码
2019/12/12 Python
使用python快速实现不同机器间文件夹共享方式
2019/12/22 Python
解决Pycharm中恢复被exclude的项目问题(pycharm source root)
2020/02/14 Python
Python Matplotlib简易教程(小白教程)
2020/07/28 Python
在什么时候需要使用"常引用"
2015/12/31 面试题
人事任命书格式
2014/06/05 职场文书
职业道德模范事迹材料
2014/08/24 职场文书
四风问题民主生活会对照检查材料思想汇报
2014/09/27 职场文书
2014年网络管理员工作总结
2014/12/01 职场文书
中学生国庆节演讲稿2015
2015/07/30 职场文书