装饰器只是用装饰性版本替换功能对象的语法, 装饰 只是 调用 (传递原始功能对象)。换句话说,语法为:
@decorator_expressiondef function_name(): # function body
大致(*)转换为:
def function_name(): # function bodyfunction_name = decorator_expression(function_name)
对于您的情况,可以改为手动应用装饰器:
from random import randintrandint = decorator(randint)
(*)在
@<decorator>函数或类上使用时,
def或
class定义的结果不会首先绑定(在当前名称空间中分配给它们的名称)。装饰器直接从堆栈传递对象,然后仅绑定装饰器调用的结果。



