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

Qia*_*iau 0 python

我可以确定在其他任何事情都没有的时候''会一直考虑False吗?

>>> if '':
...    print('bah')
...
>>> if 'x':
...    print('bah')
...
bah
Run Code Online (Sandbox Code Playgroud)

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

如果''被评估为False,为什么我得到这个结果:

>>> if '' == False:
...    print('bah')
...
>>>
Run Code Online (Sandbox Code Playgroud)

Sve*_*ach 9

文档:

任何对象都可以用于真值进行测试,用于在使用ifwhile病症或如下面的布尔运算的操作数.以下值被视为false:

  • None

  • False

  • 任何数字类型,例如零,0,0L,0.0,0j.

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

  • 例如,任何空映射{}.

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

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

  • @Qiau:隐式转换为`bool`应用于整个表达式.`if'':`与`bool('')`相同.`if''== False`与`if bool(''== False)`相同. (2认同)
  • @Qiau:你永远不想用`==`或`is`来比较'True`或'False`.使用`if not':'来表达你的要求. (2认同)