其中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如何判断为空_python中怎么判断是否为空相关推荐

  1. python中遍历字典判断是否存在_python中如何判断值在不在字典中

    python中判断值在不在字典中的方法:我们可以通过for循环来进行判断.在python中for循环可以遍历任何序列的项目.语法结构:[for iterating_var in sequence:st ...

  2. python 检查文件是否存在_Python中如何判断文件是否存在?

    这里介绍三种判断文件或文件夹是否存在的方法,分别使用os模块.Try语句.pathlib模块. 1.使用os模块 os模块中的os.path.exists()方法用于检验文件是否存在. import ...

  3. python判断最后一行_python中如何判断文件的最后一行是空行?

    问题: 前两天遇到一个问题,比如dat和bcp文件的格式需要最后一行一定是空行.但是用python怎么也不能读到最后一行的空行. test1: file_obj = open(file_name) a ...

  4. python检查列表是否为空_Python 中判断列表是否为空的方法

    在判断列表是否为空时,你更喜欢哪种方式?决定因素是什么? 在 Python 中有很多检查列表是否是空的方式,在讨论解决方案前,先说一下不同方法涉及到的不同因素. 我们可以把判断表达式可以分为两个阵营: ...

  5. python函数参数类型检查_Python中实现参数类型检查的简单方法

    Python是一门弱类型语言,很多从C/C++转过来的朋友起初不是很适应.比如,在声明一个函数时,不能指定参数的类型.用C做类比,那就是所有参数都是void*类型!void类型强制转换在C++中被广泛 ...

  6. java map 为空_java中如何判断map是否为空

    java中判断map是否为空的方法是:可以利用isEmpty()函数来判断.isEmpty()函数是java中用于判断某种容器是否有元素的系统库函数,例如用来判断ArrayList.HashSet.H ...

  7. python反爬虫与绕过_python中绕过反爬虫的方法总结

    我们在登山的途中,有不同的路线可以到达终点.因为选择的路线不同,上山的难度也有区别.就像最近几天教大家获取数据的时候,断断续续的讲过header.地址ip等一些的方法.具体的爬取方法相信大家已经掌握住 ...

  8. python购物车结算不了_python中购物车

    python的基础语法 python数据类型:(按特征划分) 数字类型: 1.整形:布尔形.长整型L.标准整形 2.非整形:双精度型.复数.decimal(不是内建类型) 序列类型: 1.字符串(st ...

  9. python判断数字奇偶_python如果快速判断数字奇数偶数

    python如果快速判断数字奇数偶数 这篇文章主要介绍了python如果快速判断数字奇数偶数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 使用 按 ...

最新文章

  1. lol简介/html
  2. Android开发四 开发第一个Android应用
  3. 【pyqt5学习】——给窗口添加图标
  4. Caffe源码解析1:Blob
  5. 五个免费UML建模工具推荐
  6. Emacs lisp函数调用defun(五)
  7. Android - 找到当前类的Context
  8. 微信小程序/js上传图片值腾讯云cos
  9. 如何批量将报表导成excel文件并打包下载
  10. mimics能导出什么格式_mimics教程
  11. 计算机应用 一级学科,一级学科、二级学科,考研专业哪个包含了计算机考研方向...
  12. 【历史上的今天】1946年2月14日:世界上第一台计算机ENIAC诞生
  13. 使用EasyPoi导出Word文件,使用@Excel注释导出实体对象图片的解决方案
  14. 软件测试的工作流程是什么?
  15. 【生活】罗曼·罗兰语录
  16. 训练日记 | 2021.03.21 | 天梯赛选拔赛
  17. iPhone 11忘记了密码怎么办?
  18. 中国二苯甲酰甲烷市场运营模式及市场供需预测报告2022-2028年
  19. 新内核版本ioctl的变化 _IO, _IOR, _IOW, _IOWR 幻数的理解
  20. php学生作业管理,学生课程作业成绩管理系统

热门文章

  1. Android软件开发-ProgressBar
  2. ubuntu 设置php开机启动
  3. Java JDBC初步
  4. linux 分区 flags,linux磁盘分区
  5. flowable 中文文档_滴滴实习收获 | 产品经理就是写文档和开会沟通的吗?
  6. python3 定时任务_Python3.x:定时任务实现方式
  7. 搞怪又可爱!一组emoji表情
  8. 梦幻星空PSD分层海报素材,通过临摹打开思路。
  9. UI设计APP素材可编辑模板|底部标签式导航
  10. 电商无线页面设计手机移动端的设计模板