默认函数,它接受一个函数对象并调用它 - Python

时间:2018-01-30 20:18:18

标签: python

是否有默认函数或方法来调用函数对象?

lambda x: x()

作品。

似乎x()大致相当于x.__call__(),但__call__是一个类方法而不是函数。

我问的原因是因为我正处理的情况是我有list部分函数我想要map(),但它们都没有参数(参数已经是烘烤)。

它只是似乎就像必须有一个内置的方式来做一个函数调用,但也许不是!

2 个答案:

答案 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']
>>>