Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将空/noop函数/lambda作为默认参数传递_Python - Fatal编程技术网

Python 将空/noop函数/lambda作为默认参数传递

Python 将空/noop函数/lambda作为默认参数传递,python,Python,这是我的代码: def execute(f, *args): f(args) 有时我不想将函数f传递给execute,因此我希望f默认为空函数 问题是,有时我不想传递任何要执行的参数,所以我希望函数默认为空函数 对我来说很好: >>> def execute(function = lambda x: x, *args): ... print function, args ... function(args) ... >>> execute()

这是我的代码:

def execute(f, *args):
    f(args)
有时我不想将函数
f
传递给
execute
,因此我希望
f
默认为空函数

问题是,有时我不想传递任何要执行的参数,所以我希望函数默认为空函数

对我来说很好:

>>> def execute(function = lambda x: x, *args):
...   print function, args
...   function(args)
...
>>> execute()
<function <lambda> at 0x01DD1A30> ()
>>>
def execute(函数=lambda x:x,*args): ... 打印函数,args ... 函数(args) ... >>>执行() () >>> 我注意到您的示例试图在实现中使用
f
,而您调用了参数
函数
。真的会这么简单吗?;)


也就是说,您需要了解,Python无法告诉您要跳过默认参数,除非根本没有参数,因此
execute(0)
无法工作,因为它试图将
0
视为一个函数。

我不太明白您想做什么
但是你喜欢这个工作吗

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

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

返回None的匿名函数通常是一个合适的no-op:

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

什么错误消息?为什么您的参数名为
函数
,但您调用了
f
?您可能会收到错误消息
全局名称“f”未定义
,因为没有定义
f
。如果您收到不同的错误消息,请指定哪一条(请完全回溯)。是的,这很有效。我试图摆脱这个
if
语句。你不需要if。只是func(*args,**kwargs)对不起,这个问题措辞很糟糕。我已经重写了它。为了使它更通用,请将它设置为
lambda*x,**xx:None
。现在它实际上是一个通用的无运算函数——它接受任意数量的参数和关键字参数。我想这意味着
lambda*a,**k:None
没有任何更短的符号。我尝试了
func=pass
,但当然没用。