Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python,条件句-这些是等价的吗?_Python_Conditional Statements - Fatal编程技术网

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()