首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用列表理解的函数调用列表

问使用列表理解的函数调用列表
EN

Stack Overflow用户
提问于 2011-03-28 23:46:40
回答 4查看 62K关注 0票数 34

我可以调用一个函数列表并使用列表理解吗?

代码语言:javascript
复制
def func1():return 1
def func2():return 2
def func3():return 3

fl = [func1,func2,func3]

fl[0]()
fl[1]()
fl[2]()

我知道我能做到

代码语言:javascript
复制
for f in fl:
   f()

但是我可以在下面这样做吗?

代码语言:javascript
复制
[f() for f in fl]

对于那些好心的人,还有一个问题,例如,如果我的函数列表在类中

代码语言:javascript
复制
class F:

    def __init__(self):
        self.a, self.b, self.c = 0,0,0

    def func1(self):
        self.a += 1

    def func2(self):
        self.b += 1

    def func3(self):
        self.c += 1

    fl = [func1,func2,func3]

fobj= F()

for f in fobj.fl:
    f()

它起作用了吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-29 12:06:12

当然你可以像法比奥·迪尼兹说的那样:),但是对于用作callable的类方法,必须给出一个对象作为参数:

代码语言:javascript
复制
fobj= F()

for f in fobj.fl:
    f(fobj)

该对象必须作为参数提供给callable,因为当您查看方法def funcX(self):的定义时,该方法需要一个参数"self“

票数 17
EN

Stack Overflow用户

发布于 2011-03-28 23:48:37

代码语言:javascript
复制
>>> [f() for f in fl]
[1, 2, 3]

绝对:)

票数 26
EN

Stack Overflow用户

发布于 2011-03-28 23:49:08

可以,停那儿吧。结果列表将保存函数的返回值。

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

https://stackoverflow.com/questions/5461571

复制
相关文章

相似问题

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