如何将 `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
将 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: None