微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何将`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] 举报,一经查实,本站将立刻删除。