首页 > 解决方案 > 为什么这个 if 语句会成功?

问题描述

下面的 if 语句成功并打印 s 的值。但是,如果您删除 : 和/或空格条件,它就会失败。我很困惑为什么它首先会成功。

    s="( )"
    if ("if" and ":" and " ") in s:
        print(s)

标签: python

解决方案


括号中的内容是一个计算结果为单个值的表达式:

>>> "if" and ":" and " "
' '
>>> _ in "( )"
True
>>> ' ' in "( )"
True
>>> ("if" and ":" and " ") == ' '
True

and就像普通的 boolean AND,但在类固醇上:

>>> 0 and 0
0
>>> 0 and 1
0
>>> 1 and 0
0
>>> 1 and 1
1
>>> 0 and 'hello'
0
>>> 'hello' and 0
0
>>> 'hello' and 'hello'
'hello'  # WAIT. That's illegal!

因此,and返回真实对象链中的最后一个真实对象(或它遇到的第一个非真实对象)。请注意,它返回一个object,而不是严格的布尔值,就像二进制 AND 那样。


推荐阅读