我经常发现自己在python中编写if/elif/else构造,并且我希望包含可能发生的选项,但相应的操作是什么都不做.我意识到我可以排除那些if语句,但为了便于阅读,我发现将它们全部包含在内是有帮助的,所以如果你查看代码,你可以看到每个选项会发生什么.如何编写no-op?目前,我这样做:
no_op = 0 if x == 0: y = 2 * a elif x == 1: z = 3 * b elif x == 3: no_op
(代码实际上比这长得多,而且更复杂.这只是为了说明结构).
我不喜欢使用变量作为无操作,但这是我能想到的最好的方式.有没有更好的办法?
使用pass for no-op:
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()