这是我的代码:
def execute(f, *args):
f(args)
我有时希望不将函数f
传递给execute
,所以我希望f
默认为空函数。
答案 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语句来执行您喜欢的任何操作。