是否有默认函数或方法来调用函数对象?
lambda x: x()
作品。
似乎x()
大致相当于x.__call__()
,但__call__
是一个类方法而不是函数。
我问的原因是因为我正处理的情况是我有list
部分函数我想要map()
,但它们都没有参数(参数已经是烘烤)。
它只是似乎就像必须有一个内置的方式来做一个函数调用,但也许不是!
答案 0 :(得分:2)
你写道,你有一个函数列表,并且没有人期望任何参数,所以你可以简单地遍历列表并只调用每个函数:
for func in list_of_functions:
func()
答案 1 :(得分:2)
使用作为内置函数,apply
, but it is deprecated虽然在Python 2上仍然可用:
>>> partials = [(lambda x: lambda: x)(c) for c in ['foo','bar','baz']]
>>> partials[0]()
'foo'
>>> partials[1]()
'bar'
>>> partials[2]()
'baz'
>>> map(apply, partials)
['foo', 'bar', 'baz']
你应该完全不同意map
方法并使用列表理解,这通常比map
+ lambda
更受欢迎,并且可以在Python 2和Python 3中使用:
>>> [f() for f in partials]
['foo', 'bar', 'baz']
>>>