Python对象真值判定逻辑粗解与简明例子

Python的真值判定

python3.7
Shawn
文档:
https://docs.python.org/3.7/library/stdtypes.html#truth-value-testing


  • python中有很多时候可以直接将对象用在if和while中.
  • 但是在功能上,这些位置是需要通过Boolean来进行判断的.
  • 这就牵扯到Python对于True和False的设计概念.
  • 在默认状态下,python会认定你的对象恒为真直到对象的__bool__()方法返回false或者对象的__len__()返回0.
  • 包括但不限于以下状况:
    • None与False
    • 任何数学形式的0:0,0.0,0j,Decimal(0),Fraction(0,1)
    • 空队列/集合:’’,(),[],{},set(),range(0)

  • 以下案例说明了:
    • 1.无__len__()与__bool__()状态下,python将对象恒判断为真.
    • 2,3.在有__len__()或__bool__()状态下,python根据其返回结果来判断真伪.
    • 4.1,4.2:在__len__()与__bool__()同时存在时,python只会承认__bool__()的结果,无视__len__()的结果.
# 1.在无__len__()与__bool__()状态下:

class test:
    def __init__(self,n):
        self.lis = []
        for i in range(n):
            self.lis.append(i)

    def print(self):
        try:
            print(self.lis.pop())
        except:
            print("empty list")

=================== RESTART: F:\PyWorkspace\booleanTest.py ===================
>>> t = test(9)
>>> while t:
	t.print()

	
8
7
6
5
4
3
2
1
0
empty list
empty 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值