在python中做no-op的标准方法是什么?

我经常发现自己在python中编写if / elif / else结构,并且我希望包含可能发生的选项,但相应的操作是不做任何事情。我意识到我可以排除这些if语句,但为了可读性,我发现将它们都包括在内很有帮助,所以如果你在查看代码,你可以看到每个选项的结果。我该如何对“不行动”进行编码?目前,我是这样做的:

no_op = 0


if x == 0:
y = 2 * a
elif x == 1:
z = 3 * b
elif x == 3:
no_op

(代码实际上比这长一些,也更复杂。这只是为了说明结构)。

我不喜欢使用变量作为无操作,但这是我能想到的最简洁的方法。有没有更好的办法?

148562 次浏览

使用通过进行无操作:

if x == 0:
pass
else:
print "x not equal 0"

这里还有一个例子:

def f():
pass

或者:

class c:
pass

pass呢?

如果您需要一个表现为nop的函数,请尝试一下

nop = lambda *a, **k: None
nop()

有时候,当我将依赖项设置为可选时,我会这样做:

try:
import foo
bar=foo.bar
baz=foo.baz
except:
bar=nop
baz=nop


# Doesn't break when foo is missing:
bar()
baz()

在我的桌子上有一个简单的练习,就是用这样的句子:

dummy = 0

普通的编码器(甚至那些来自其他通用编程语言的编码器)会立即理解它。

可以将空字符串和不换行输出到标准输出。如果linter禁止你在不必要的地方使用pass,但你需要一行注释,这可能很方便:

print('', end='')  # This does next to nothing

使用这个空print除了浪费CPU周期外,副作用很小:

$ echo "print('', end='')  # This does next to nothing" > main.py
$ python3 main.py
$

注意,在这里使用pass在语法上是正确的,但是linter可能会抱怨:

$ echo "pass  # This does next to nothing" > main.py
$ python3 main.py
$