如何将 `lambda: pass` 作为关键字参数传递?

How to pass `lambda: pass` as keyword argument?

将 lambda 作为关键字参数传递可以很容易地完成,因为

def foo(bar=lambda x: x):
    pass

我想要一个 None->None lambda 作为默认值:

def foo(bar=lambda: pass):
    pass    

但是得到

    def foo(bar=lambda: pass):
                           ^
SyntaxError: invalid syntax

如何将 None->None lambda 作为默认关键字参数传递?

也许 pass 不是 return None 的同义词。所以也许 return None 而不是?

def foo(bar=lambda: None):
    pass

pass 是一个语句,而 lambda 只能包含一个表达式(实际上,它是一个函数,其唯一行是 return,而 lambda 的主体是 returned).

在 Python 中,当您在没有显式 return 的情况下到达函数的末尾时(或者当您有一个显式 return 而没有为 return 指定某些内容时) ,它 returns None。所以一个函数

def foo():
    pass

等同于

def foo():
    return None

所以你可以把它写成 returns None:

的 lambda
lambda: None