Написать декоратор

декоратор должен записывать в файл во сколько начала отрабатывать декорируемая функция и во сколько закончила


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

Автор решения: Екатерина Корчагина

oksdfj() - функция которую мы записываем

nachalo() - функция которая вызывается в начале функции oksdfj() и записывает время и дату в файл log.txt (Не забудь создать файл)

konec() - функция которая вызывается в конце функции oksdfj() и записывает время и дату в файл log.txt

from datetime import datetime
import time

def nachalo():
    current_datetime1 = datetime.now() 
    print(current_datetime1)
    f = open('log.txt', 'a')
    f.write(str(current_datetime1) + "\n")
    f.close()

def konec():
    current_datetime1 = datetime.now() 
    print(current_datetime1)
    f = open('log.txt', 'a')
    f.write(str(current_datetime1) + "\n")
    f.close()

def oksdfj(): 
    nachalo()
    print("funcia delaet chto-to - 0")
    time.sleep(1) 
    print("funcia delaet chto-to - 1")
    time.sleep(1)
    print("funcia delaet chto-to - 2")
    time.sleep(1)
    print("funcia delaet chto-to - 3")
    konec()
oksdfj()
→ Ссылка
Автор решения: Руслан Мамедов

Декоратор - функция, которая оборачивает другую функцию, добавляя ей желаемое поведение.

from datetime import datetime
import time


# декорируемая функция
def timer():
    print("0")
    time.sleep(1)
    print("1")
    time.sleep(1)
    print("2")
    time.sleep(1)
    print("3")


# декоратор
def timer_logger():
    with open('log.txt', 'a') as file:
        timer_logger_start(file)
        timer()
        timer_logger_end(file)


# начало декоратора
def timer_logger_start(file):
    file.write(str(datetime.now()) + "\n")


# конец декоратора
def timer_logger_end(file):
    file.write(str(datetime.now()) + "\n")


# точка входа в программу
if __name__ == '__main__':
    timer_logger()
→ Ссылка