首页 > 解决方案 > 将参数传递给不同类中的装饰器

问题描述

我想看看是否可以将参数传递给位于脚本中的装饰器,该脚本从存在该参数的不同脚本中调用。例如,假设我有script_1.py哪个正在调用该方法:

import function_1

param_1 = 5
result = function_1(arg1, arg2)

现在这个函数位于script_2.py装饰器的位置param_1

@decorator(param_1)
def function_1(arg1, arg2):
    #do some stuff

那么有什么方法可以调用带有装饰器的函数script_1.py并传入param_1装饰器中script_2.py吗?

标签: pythonpython-3.xparameter-passingdecoratorpython-decorators

解决方案


装饰器在def语句被评估后立即运行。

@decorator(param1)
def function_1(arg1, arg2):
    ...

相当于

def function_1(arg1, arg2):
    ...

function_1 = decorator(param1)(function_1)

此代码在您执行import语句时运行,而不是在您调用function_1.


推荐阅读