我可以调用函数列表并使用列表理解吗?
def func1():return 1
def func2():return 2
def func3():return 3
fl = [func1,func2,func3]
fl[0]()
fl[1]()
fl[2]()
我知道我能做到
for f in fl:
f()
但我可以在下面做吗?
[f() for f in fl]
如果我的功能列表在课堂上,那么那些善良的人的另一个问题,例如
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()
有效吗?
答案 0 :(得分:21)
>>> [f() for f in fl]
[1, 2, 3]
绝对:)
答案 1 :(得分:15)
当然你可以像FábioDiniz所说:), 但是,对于用作可调用对象的类方法,必须将对象作为参数提供:
fobj= F()
for f in fobj.fl:
f(fobj)
必须将对象作为参数提供给callable,因为当您查看方法def funcX(self):
的定义时,该方法需要一个参数“ self ”
答案 2 :(得分:1)
是的,你可以。结果列表将保存函数的返回值。
答案 3 :(得分:0)
是的,您可以 - 按预期调用函数。