请说明Python中的或操作员正在发生的事情
>>>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
第一个输出显然是有道理的。从第二个输出中,我不遵循正在发生的事情!
使用括号时,您会告诉解释器首先解释括号内的内容。因此,让我们从第二个开始,从输出开始:
>>>('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