带空字符串的条件语句

时间:2015-10-15 02:50:39

标签: python-3.x

为什么'' and not '123'评估为''而不是False,但not '123' and ''在Python 3.4.3中评估为False

1 个答案:

答案 0 :(得分:2)

一旦确定答案,逻辑和/或运算符就会停止评估术语(短路)。

and

的示例
>>> '' and not '123'
''

第一个是假的,所以and被短路,第一个被退回。

>>> not '123' and ''
False

not '123'返回False。由于这是错误的,and会被短路,并且会返回not '123'的结果。

出于完全相同的原因,以下内容返回零:

>>> 0 and '123'
0

以下内容返回[]

>>> [] and '123'
[]

or

的示例
>>> '' or '123'
'123'
>>> not '123' or 'Hi'
'Hi'
>>> '123' or 'Hi'
'123'

文档

此行为在the documentation中指定:

  • x or y定义为if x is false, then y, else x

  • x and y定义为if x is false, then x, else y

  • not x定义为if x is false, then True, else False