摘录来自: 张颖 赖勇浩 著. “编写高质量代码:改善Python程序的91个建议。” Apple Books.
Python中以下数据会当做空来处理:
·常量None。
·常量False。
·任何形式的数值类型零,如0、0L、0.0、0j。
·空的序列,如''、()、[]。
·空的字典,如{}。
·当用户定义的类中定义了nonzero()方法和len()方法,并且该方法返回整数0或者布尔值False的时候。
其中常量None的特殊性体现在它既不是0、False,也不是空字符串,它就是一个空值对象。其数据类型为NoneType,遵循单例模式,是唯一的,因而不能创建None对象。所有赋值为None的变量都相等,并且None与任何其他非None的对象比较结果都为False。
判断是否为空的方式:
if list1 #value is not empty
③判断list1
是否为空的正确方式
Do something
else: #value is empty
Do some other thing”
标注③执行过程中会调用内部方法__nonzero__()来判断变量list1是否为空并返回其结果。下面介绍一下__nonzero__()方法:该内部方法用于对自身对象进行空值测试,返回0/1或True/False。如果一个对象没有定义该方法,Python将获取__len__()方法调用的结果来进行判断。__len__()返回值为0则表示为空。如果一个类中既没有定义__len__()方法也没有定义__nonzero__()方法,该类的实例用if判断的结果都为True。”