在Python中, 一切都是对象。这意味它可以是字典的值、列表的项或是另一个对象的属性,可以作为参数传递给高阶函数。
def function_decorator(func):
def wrapper():
# do something
func()
# do something
return wrapper
def function():
print('I\'m a normal function.')
function = function_decorator(function)
function()
这里将function传入,然后返回新的wrapper,wrapper里一般会调用function不然就没必要用装饰器了。
以上的
decorated_function = function_decorator(function)
在Python里提供了一个特定的语法使得它看上去更直观,更简单:
def function_decorator(func):
def wrapper():
# do something
func()
# do something
return wrapper
@function_decorator
def function():
print('I\'m a normal function.')
# decorated_function = function_decorator(function)
function()
用一个@function_decorator代替了直接调用decorated_function = function_decorator(function)
就这样了