早上好,
我的问题如下:
if variable == 'string1':
do_stuff
elif variable == 'string2' or 'string3':
do_stuff2
它不能正常工作:做" stuff2"当变量等于" string2"或" string3"。
要做到这一点,我必须改为以下代码:
if variable == 'string1':
do_stuff
elif variable == 'string2' or variable == 'string3':
do_stuff2
此代码工作正常:当变量等于" string2"或" string3",代码可以填充stuff2。
我不明白有什么区别:
elif variable == 'string2' or variable == 'string3'
和elif variable == 'string2' or 'string3'
。
python在第二个版本中理解了什么?
感谢您的帮助,
帕多
答案 0 :(得分:0)
这有助于您理解:
>>> x = 'Test'
>>>
>>> x == 'Test1' or 'Test2'
'Test2' #Expression evaluated to value of 'Test2' as first was False
>>>
>>> x == 'Test1' or 'Test'
'Test' #Expression evaluated to value of 'Test' as first was False
>>>
>>> x == 'Test' or 'Test1'
True #Expression evaluated to True as x is truly 'Test'
>>>
>>> x == 'Test1' or x == 'Test'
True #Expression evaluated to True as second expression was True
答案 1 :(得分:0)
在REPL中尝试。
>>> "one" or "two"
'one'
这是短路或'。它返回第一个非False值。
'或'的含义运营商是"是一个或另一个价值真相?"。返回第一个真值的短路功能是奖励功能。
所以你的陈述
elif variable == 'string2' or 'string3':
实际上意味着
elif variable == 'string2':