Я пытался узнать больше о декораторах Python, используя отличный учебник по адресу https://realpython.com/blog/python/primer-on-python-decorators/.с выпуском декоратора python
Я попытался отклониться от сценария и столкнулся с некоторыми проблемами. Код ниже. В основном, когда я запускаю сценарий ниже, первый вызов функции time_print_function() выполняется, как ожидалось.
Но я получаю сообщение об ошибке в my_decorator вызова следующей функции (печать (datetime.datetime.now()))()
Я ожидал, что это будет производить вывод такой же, как time_print_function()
кодекс
def my_decorator(some_function):
def wrapper(*args):
print "Something is happening before some_function() is called."
if args:
some_function(args)
else:
some_function()
print "Something is happening after some_function() is called."
return wrapper
@my_decorator
def time_print_function():
print(datetime.datetime.now())
time_print_function()
my_decorator(print(datetime.datetime.now()))()
Спасибо. Все еще видя ошибку. Мне нужно что-то импортировать, прежде чем я смогу использовать лямбда. Я пробовал импорт os. Файл "decorator_examples.py", строка 53 my_decorator (лямбда: печать (datetime.datetime.now()))() ^ SyntaxError: неверный синтаксис [Законченный в 0.1се с кодом выхода 1] –
Не для лямбды , но для использования «print» в качестве функции вам нужно либо использовать Python3.x, либо делать из __future__ import print_function' в Python 2.x – jsbueno
Спасибо. это работает. –