Список вызовов функции, использующей понимание списка
Можно ли вызвать список функций и использовать список?
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()
работает ли он?
Ответы
Ответ 1
Конечно, вы можете, как сказал Фабио Диниз:),
Однако для метода класса, когда он используется как вызываемый, объект должен быть указан как аргумент:
fobj= F()
for f in fobj.fl:
f(fobj)
Объект должен быть указан как аргумент вызываемого, потому что, когда вы смотрите на определение метода def funcX(self):
, для метода нужен один аргумент self "
Ответ 2
>>> [f() for f in fl]
[1, 2, 3]
Абсолютно:)
Ответ 3
Да, вы можете. Полученный список будет содержать возвращаемые значения ваших функций.
Ответ 4
Да, вы можете - функции вызываются по назначению.