如何解决如何将`lambda: pass` 作为关键字参数传递?
传递 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
的同义词。所以也许返回 None
代替?
def foo(bar=lambda: None):
pass
,
// casting
ArrayList<HashMap<String,String>> copies2 = (ArrayList) entries.stream() // Stream<HashMap>
.map(m -> (HashMap<String,String>) m.entrySet()
.stream()
.filter(e -> keys.contains(e.getKey()))
.collect(Collectors.toMap(Map.Entry::getKey,Map.Entry::getValue))
)
.collect(Collectors.toList());
// special collectors
// toMap(keyMapper,valueMapper,mergeFunction,mapFactory)
// toList -> toCollection(ArrayList::new)
ArrayList<HashMap<String,String>> copies3 = entries.stream() // Stream<HashMap>
.map(m -> m.entrySet()
.stream()
.filter(e -> keys.contains(e.getKey()))
.collect(Collectors.toMap(Map.Entry::getKey,Map.Entry::getValue,(a,b) -> a,HashMap::new))
)
.collect(Collectors.toCollection(ArrayList::new));
是一个语句,而 lambda 只能包含一个表达式(实际上,它是一个函数,其唯一的一行是 pass
,并且 lambda 的主体是返回的内容)。
在 Python 中,当您在没有显式返回的情况下到达函数的末尾时(或者当您在没有指定要返回的内容的情况下有显式返回时),它返回 return
。所以一个函数
None
相当于
def foo():
pass
所以你可以把它写成一个返回 def foo():
return None
的 lambda:
None
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。