Подтвердить что ты не робот

Список вызовов функции, использующей понимание списка

Можно ли вызвать список функций и использовать список?

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()

работает ли он?

4b9b3361

Ответ 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

Да, вы можете - функции вызываются по назначению.