【改善Python程序的91个建议】建议26:深入理解None,正确判断对象是否为空

摘录来自: 张颖 赖勇浩 著. “编写高质量代码:改善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。”

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值