puis-je appeler une liste de fonctions et utiliser la compréhension de liste?
def func1():return 1
def func2():return 2
def func3():return 3
fl = [func1,func2,func3]
fl[0]()
fl[1]()
fl[2]()
Je sais que je peux faire
for f in fl:
f()
mais puis-je faire ci-dessous?
[f() for f in fl]
Une question supplémentaire pour ces gens gentils, si ma liste de fonctions est en classe, par exemple
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()
est-ce que ça marche?
Bien sûr, vous pouvez, comme l'a dit Fábio Diniz :), Cependant pour la méthode de classe lorsqu'elle est utilisée comme appelable, un objet doit être donné comme argument:
fobj= F()
for f in fobj.fl:
f(fobj)
L'objet doit être donné comme argument à l'appelable car lorsque vous regardez la définition de la méthode def funcX(self):
la méthode a besoin d'un argument "self"
>>> [f() for f in fl]
[1, 2, 3]
Absolument :)
Oui, vous pouvez. La liste résultante contiendra les valeurs de retour de vos fonctions.
Oui, vous pouvez - les fonctions sont appelées comme prévu.