Python,条件句-这些是等价的吗?
好吧,既然Python,条件句-这些是等价的吗?,python,conditional-statements,Python,Conditional Statements,好吧,既然pass什么都不做,而且想必config.\uuuuu eq\uuuuu没有副作用,我想它们是等价的(因为什么都没有发生) 但是,如果用其他内容替换pass,您会注意到第一个条件始终执行,第二个条件取决于config的值 也许你想写信 >>> config = 'H/2' >>> config == 'H/2' or 'H' or '2H' True >>> config == 'H/2' or config == 'H' or c
pass
什么都不做,而且想必config.\uuuuu eq\uuuuu
没有副作用,我想它们是等价的(因为什么都没有发生)
但是,如果用其他内容替换pass
,您会注意到第一个条件始终执行,第二个条件取决于config
的值
也许你想写信
>>> 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
好吧,既然
pass
什么都不做,而且想必config.\uuuuu eq\uuuuu
没有副作用,我想它们是等价的(因为什么都没有发生)
但是,如果用其他内容替换pass
,您会注意到第一个条件始终执行,第二个条件取决于config
的值
也许你想写信
>>> 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
执行以下任一操作:
if config in ['H/2', 'H', '2H']:
# do stuff
pass
或者(如果您经常这样做,或者可能的值集要大得多):
执行以下任一操作:
if config in ['H/2', 'H', '2H']:
# do stuff
pass
或者(如果您经常这样做,或者可能的值集要大得多):
不,你为什么这么问?你试过了吗?我试过了,它们看起来是一样的。这让我很惊讶。也许我的测试不够彻底,“我试过了”?真正地怎么做?不,不一样,但是(只是猜测)您可能会发现有趣的是,您可以在('H/2','H','2H')中编写
if config:pass
,这相当于您的第二行。否。你为什么这么问?你试过了吗?我试过了,它们看起来是一样的。这让我很惊讶。也许我的测试不够彻底,“我试过了”?真正地怎么做?不,不一样,但是(只是猜测)您可能会发现有趣的是,您可以在('H/2','H','2H'):pass中编写if config,这相当于您的第二行。最后一个示例对我来说没有意义。为什么比较返回“H”?or运算符不一定转换为bool。来自帮助(“或”):表达式x或y
首先计算x;如果x为true,则返回其值;否则,计算y并返回结果值。请注意,和
以及或
都没有限制它们返回的值和类型为False
和True
,而是返回最后计算的参数。这有时很有用,例如,如果s
是一个字符串,如果该字符串为空,则应将其替换为默认值,则表达式s或'foo'
将生成所需的值。or运算符永远不会转换为bool。根据定义。值保持不变。最后一个示例对我来说没有意义。为什么比较返回“H”?or运算符不一定转换为bool。来自帮助(“或”):表达式x或y
首先计算x;如果x为true,则返回其值;否则,计算y并返回结果值。请注意,和
以及或
都没有限制它们返回的值和类型为False
和True
,而是返回最后计算的参数。这有时很有用,例如,如果s
是一个字符串,如果该字符串为空,则应将其替换为默认值,则表达式s或'foo'
将生成所需的值。or运算符永远不会转换为bool。根据定义。这些值保持不变。
# once
config_h_set = set(('H/2', 'H', '2H'))
# later
if config in config_h_set:
do_something()