Порядок выполнения функции

Использую в функции в качестве аргумента функцию у которой указываю аргумент

from log_v2 import t, l

l(t(r'C:\Test\'))

функция l()

import logging
from datetime_v8 import name, t

dirlog = r'C:\Test\log.txt'

def l(t, namefile=name):
    logger = logging.getLogger(__name__)
    logger.setLevel(logging.DEBUG)

    file_handler = logging.FileHandler(dirlog)
    file_handler.setFormatter(logging.Formatter())
    logger.addHandler(file_handler)

    logger.info('Скрипт {} начал работу'.format(namefile()))

    try:
        t()
    except ValueError as v:
        logger.error(v)
    except KeyboardInterrupt as k:
        logger.error('Исполнение прервано вручную')

    logger.info('Скрипт завершил работу'+'\n')


if __name__=="__l__":
    l(t, namefile)    


Подскажите почему при выполнении l(t(r'C:\Test\')) начинает исполняться функция t а не l и как правильно вызывать такого вида конструкции


Ответы (2 шт):

Автор решения: Black Square

Вы не передаете функцию t, вы ее выполняете!

Попробуйте так:

l(t) - Выполняется только l
l(t()) - Выполняется t, а потом результат t передается в l и выполняется l

Чтоб исправить проблему:

l(t(r'C:\Test\')) # Не правильно
l(t, r'C:\Test\') # Правильно

Функция l принимает 2 аргумента: функцию и название файла

→ Ссылка
Автор решения: MarianD

Здесь пример, в каком порядке вычисляются функции:

1

Например, для значения '-127' (это не число, а строка из 4 символов) мы получим постепенно

2

значит, результатом будет число 127.

→ Ссылка