请在python中解释or运算符发生了什么
>>>sen='abcdef'
>>>'a' in sen
True
>>>'v' or 'z' in sen
'v'
>>>('v' or 'z') in sen
False
>>>('v' or 'a') in sen
False
>>>('a' or 'v') in sen
True
第一个输出显然是有意义的。从第二个输出中,我不了解发生了什么!
答案 0 :(得分:2)
使用括号时,您告诉解释器首先解释括号中的内容。因此,让我们回顾一下从第二个开始的输出:
>>>('v' or 'z') in sen
您在这里所做的是:
('v' or 'z')
转换为v
,因为它从左到右-它们都求值为True
,因此,如果您要编写'z' or 'v'
,它将求值为z
。因此,您正在检查v
是否在sen
-> False
内部。
继续前进:
>>>('v' or 'a') in sen --> is 'v' inside sen?
False
>>>('a' or 'v') in sen --> is 'a' inside sen?
True