首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python:如何将函数作为参数传递给另一个函数?

Python:如何将函数作为参数传递给另一个函数?
EN

Stack Overflow用户
提问于 2013-02-03 07:04:06
回答 1查看 197关注 0票数 0

我有两个自定义函数:

代码语言:javascript
运行
复制
f(), g()

我希望将所有月份传递给它们,并按如下方式传递另一个函数:

代码语言:javascript
运行
复制
x(f("Jan"), g("Jan"), f("Feb"), g("Feb"), f("Mar"), g("Mar"), ...)

如何在短时间内做到这一点?

诚挚的问候

EN

Stack Overflow用户

回答已采纳

发布于 2013-02-03 07:06:32

因此,首先,我们要对列表中的每一项调用f()g()。我们可以使用list comprehension来实现这一点

代码语言:javascript
运行
复制
[(f(month), g(month)) for month in months]

这会产生一个元组列表,但是我们想要一个平面列表,所以我们使用itertools.chain.from_iterable()来扁平化它(或者在本例中,仅仅是一个生成器表达式):

代码语言:javascript
运行
复制
from itertools import chain

chain.from_iterable((f(month), g(month)) for month in months)

然后,我们将这个迭代器unpackx()的参数中

代码语言:javascript
运行
复制
x(*chain.from_iterable((f(month), g(month)) for month in months))

编辑:如果您希望传递准备好使用该参数执行的函数,而不执行它们,那么可以使用functools.partial()来拯救它们:

代码语言:javascript
运行
复制
from functools import partial

[(partial(f, month), partial(g, month)) for month in months]

这意味着x()的参数将是在调用时运行f()g()的函数,并将月份填充为partial。当然,这可以以与以前相同的方式扩展。

票数 5
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14667495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档