在这里尝试解决python中的问题:
print "word" in [] == False
为什么打印False
?
答案 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