0
我想了解更多關於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()))()
感謝。仍然看到一個錯誤。在使用lambda之前,我需要導入一些東西嗎?我試過進口操作系統。文件 「decorator_examples.py」 53行 my_decorator(拉姆達:打印(datetime.datetime.now()))() ^ 語法錯誤:無效的語法 [在0.1秒完成,退出代碼1] –
不適用於拉姆達,但是對於使用「print」作爲函數,您必須使用Python3.x或在Python 2.x中使用'from __future__ import print_function'。 – jsbueno
謝謝。這樣可行。 –