if config == 'H/2' or 'H' or '2H': pass
if config == 'H/2' or config == 'H' or config == '2H': pass
答案 0 :(得分:8)
>>> config = 'H/2'
>>> config == 'H/2' or 'H' or '2H'
True
>>> config == 'H/2' or config == 'H' or config == '2H'
True
>>> config = 'H'
>>> config == 'H/2' or 'H' or '2H'
'H'
>>> config == 'H/2' or config == 'H' or config == '2H'
True
>>> config = 'R'
>>> config == 'H/2' or 'H' or '2H'
'H'
>>> config == 'H/2' or config == 'H' or config == '2H'
False
答案 1 :(得分:2)
好吧,因为pass
什么也没做,大概config.__eq__
没有副作用,我认为它们是等价的(因为没有任何反应)。
如果用其他东西替换pass
,你会注意到第一个条件总是执行而第二个条件取决于config
的值。
也许你想写
if config in ['H/2', 'H', '2H']:
# do stuff
pass
答案 2 :(得分:1)
要么:
if config in ('H/2', 'H', '2H'): # more efficient than a list
do_something()
或(如果您经常这样做或者可能的值集更大):
# once
config_h_set = set(('H/2', 'H', '2H'))
# later
if config in config_h_set:
do_something()