传递empty / noop函数/ lambda作为默认参数

时间:2012-01-11 11:07:17

标签: python

这是我的代码:

def execute(f, *args):
    f(args)

我有时希望不将函数f传递给execute,所以我希望f默认为空函数。

3 个答案:

答案 0 :(得分:11)

  

问题是有时候想要传递没有参数来执行,所以我希望函数默认为空函数。

对我来说很好:

>>> def execute(function = lambda x: x, *args):
...   print function, args
...   function(args)
...
>>> execute()
<function <lambda> at 0x01DD1A30> ()
>>>

我注意到您的示例尝试在实现中使用f,而您调用了参数function。难道真的那么简单吗? ;)

那就是说,你需要明白Python没有办法告诉你要跳过默认参数,除非根本没有参数,所以execute(0)无法工作,因为它试图处理{{1作为一个函数。

答案 1 :(得分:7)

返回None的匿名函数通常是合适的无操作:

def execute(func=lambda *a, **k: None, *args, **kwargs):
    return func(*args, **kwargs)

答案 2 :(得分:4)

我不太清楚你想做什么 但这样的事情对你有用吗?

def execute(func=None, *args, **kwargs):
    if func:
        func(*args, **kwargs)

您还可以添加else语句来执行您喜欢的任何操作。