我是否可以在不使用lambda
关键字的情况下引用方法
假设我们有以下示例代码:
class AbstractDummy:
def size(self):
raise NotImplementedError
class Dummy1(AbstractDummy):
def size(self):
return 10
class Dummy2(AbstractDummy):
def size(self):
return 20
如果我有我的示例对象:
dummies1 = [Dummy1(), Dummy1(), Dummy1()]
dummies2 = [Dummy2(), Dummy2()]
然后,如果我想map
它们,我可以使用提取的函数参数来保存一些字符:
f = lambda x : x.size()
map(f, dummies1)
map(f, dummies2)
这里的问题:我能以某种方式避免这个临时的f
和/或lambda
关键字吗
进行一个小的比较,在Java中可以引用AbstractDummy::size
,因此调用看起来有点像print(map(AbstractDummy::size, dummies1)
operator
模块为此提供了methodcaller
虽然}在需要函数作为函数参数时非常有用
[x.size() for x in ...]
更简单,就像C_Z_2;的回答一样^例如,{在这种情况下,您可能需要使用列表
[x.size() for x in dummies1]
[x.size() for x in dummies2]
相关问题 更多 >
编程相关推荐