Python:在[] == False中打印“word”

时间:2011-09-30 22:27:50

标签: python

在这里尝试解决python中的问题:

print "word" in [] == False

为什么打印False

3 个答案:

答案 0 :(得分:11)

这个不寻常行为的一个更明显的例子如下:

>>> print 'word' in ['word']
True
>>> print 'word' in ['word'] == True
False

您的示例相当于:

print ("word" in []) and ([] == False)

这是因为可以组合两个布尔表达式,目的是允许这个缩写:

a < x < b

这个更长但等效的表达式:

(a < x) and (x < b)

答案 1 :(得分:3)

就像您可以在23 < x < 42中链接运营商一样,您可以使用in==进行链接。

"word" in []False[] == False评估为False。因此,整个结果是

"word" in [] == False
"word" in [] and [] == False
False and False
False

答案 2 :(得分:1)

只是为Mark Byers添加了很棒的答案

>>> import dis
>>> dis.dis(lambda: 'word' in [] == False)
  1           0 LOAD_CONST               1 ('word')
              3 BUILD_LIST               0
              6 DUP_TOP             
              7 ROT_THREE           
              8 COMPARE_OP               6 (in)
             11 JUMP_IF_FALSE_OR_POP    21
             14 LOAD_GLOBAL              0 (False)
             17 COMPARE_OP               2 (==)
             20 RETURN_VALUE        
        >>   21 ROT_TWO             
             22 POP_TOP             
             23 RETURN_VALUE        
>>> dis.dis(lambda: ('word' in []) == False)
  1           0 LOAD_CONST               1 ('word')
              3 LOAD_CONST               2 (())
              6 COMPARE_OP               6 (in)
              9 LOAD_GLOBAL              0 (False)
             12 COMPARE_OP               2 (==)
             15 RETURN_VALUE