python中带有str的if语句的机制

时间:2012-08-09 11:05:59

标签: python

我可以确定''始终被视为False而其他任何内容都不会被视为<{p}}吗?

>>> if '':
...    print('bah')
...
>>> if 'x':
...    print('bah')
...
bah

为什么或为什么不呢? Python中的哪种机制定义了这种行为?

如果将''评估为False,为什么我会得到此结果:

>>> if '' == False:
...    print('bah')
...
>>>

1 个答案:

答案 0 :(得分:9)

来自documentation

可以测试任何对象的真值,以便在ifwhile条件下使用,或者作为下面布尔运算的操作数。以下值被视为false:

  • None

  • False

  • 任何数字类型的零,例如00L0.00j

  • 任何空序列,例如''()[]

  • 任何空映射,例如{}

  • 用户定义类的实例,如果类定义了__nonzero__()__len__()方法,则该方法返回整数零或bool值False

所有其他值都被认为是真的 - 因此许多类型的对象始终为真。