概念:function decorator 是一个返回函数的的函数(high order function, function return function)
技术用途:在不改变函数的代码的情况下,修改函数的执行行为。
基本的结构:
function_decorator(function):
...
def innner(params_pass_to_function):
...
function(params_pass_to_function)
...
...
return inner
@function_decoarator
def function(params):
function(params)
等效于:
f=function_decorator(function)
f(params)
如果修饰器需要有而外的参数传给inner,可以如下定义:
def function_decorator(function,param_pass_to_inner):
def actual_decorator(function):
def innner(params_pass_to_function):
...
#params_pass_to_inner is visible to inner
function(params_pass_to_function)
...
...
return inner
return actual_decorator
@function_decorator(params_pass_to_inner)
function(params)
等效于:
f=function_decorator(params_pass_to_inner)(function)
更详细的文章见:点击打开链接