Порядок выполнения функции
Использую в функции в качестве аргумента функцию у которой указываю аргумент
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
→ Ссылка
Здесь пример, в каком порядке вычисляются функции:
Например, для значения '-127'
(это не число, а строка из 4 символов) мы получим постепенно
значит, результатом будет число 127
.