回答
我不太明白你在做什么
但是会有这样的东西适合你吗?
def execute(func=None, *args, **kwargs):
if func:
func(*args, **kwargs)
您还可以添加一个else语句来做任何你喜欢的事情。
是的,那是有效的。我试图摆脱这个“if”陈述。 – Randomblue 2012-01-11 11:22:27
在这个如果func是def func():pass。你不需要if。只是功能(*参数,** kwargs) – 2014-05-21 12:26:22
问题是有时候想传递没有参数来执行,所以我想把函数默认为空函数。
我
正常工作:
>>> def execute(function = lambda x: x, *args):
... print function, args
... function(args)
...
>>> execute()
<function <lambda> at 0x01DD1A30>()
>>>
我注意到你的榜样试图执行中使用f
,而你所谓的参数function
。难道真的那么简单吗? ;)
这就是说,你要明白,Python会没有办法告诉你想跳过默认的参数,除非有根本没有参数,所以,因为它试图把0
作为函数execute(0)
不能工作。
对不起,这个问题非常措辞。我已经重写了它。 – Randomblue 2012-01-11 11:31:42
为了使它更通用,使它成为'lambda * x,** xx:None'。现在它实际上是一个通用的no-op函数 - 它接受任意数量的参数和关键字参数。 – 2012-01-11 11:56:12
匿名函数返回无往往是一个合适的无操作:
def execute(func=lambda *a, **k: None, *args, **kwargs):
return func(*args, **kwargs)
我想这意味着没有任何简短的符号'lambda * a,** k:None'。我尝试了'func = pass',但当然这并不奏效。 – kasperd 2015-01-02 00:51:18
- 1. PHP 7.1可为空的默认功能参数
- 2. ES6默认参数为空对象?
- 3. 默认值[异常]:为功能参数
- 4. 通行证空功能句柄作为参数MATLAB
- 5. 空哈希作为默认参数变成数组?
- 6. C++继承功能默认操作
- 7. 功能与选项参数,或者使用一个空的字典作为默认的参数
- 8. 为什么在某些默认MVC操作中id可为空?
- 9. 默认为空值不为空
- 10. 斯卡拉默认参数和空
- 11. 和λ功能
- 12. 功能命名参数问题默认
- 13. 创建默认的功能参数
- 14. JavaScript中的默认功能参数
- 15. 将空列表作为默认Rhino Mocks
- 16. 数据表的默认渲染功能空单元
- 17. 设置MVC3参数设定为默认如果为空或空的控制器
- 18. 值为空或默认值
- 19. 默认为空微调器
- 20. 可为空或默认值?
- 21. 是ContactsContract.Contacts默认为空吗?
- 22. 默认数组参数意外不为空
- 23. bash的功能 - 带有空格的文件名作为参数
- 24. Express URL参数功能不会解码加号(+)作为空格
- 25. 与空数组默认为{0}
- 26. 功能作为参数与功能指针作为参数
- 27. C++重载ostream的不默认工作与空参数
- 28. 传递一个空数组作为可选参数的默认值
- 29. 2少参数,其中一个默认为空
- 30. safari中的默认功能参数值不起作用
错误消息是什么?为什么你的参数名为'function',但你叫'f'? – 2012-01-11 11:08:46
你可能得到错误信息'全局名'f'没有定义,因为没有定义'f'。如果您收到了不同的错误信息,请指定哪一个(请完整回溯)。 – 2012-01-11 11:09:42