2 回答

TA贡献1884条经验 获得超4个赞
装饰器语法只是函数应用的快捷方式; 只是一个函数。创建一个使用固定参数调用它的新函数。app.callback
def new_callback(plot):
return app.callback(
Output(plot, "figure"),
[
Input("checklist", "value"),
Input("radio", "value")
]
)
app.callback本身实际上不是装饰者;它是一个返回装饰器的函数(即,将要修饰的函数作为参数的函数)。
@app.callback(...)
def foo():
...
等效于
def foo():
...
foo = app.callback(...)(foo)

TA贡献1858条经验 获得超8个赞
您可以将装饰器包装在其自己的装饰器中,并使用您在任何子函数中传递的参数,如下所示:
def decorator_wrapper(arg1):
# do something with arg1:
print('Inside decorator_wrapper, arg1: ' + str(arg1))
def decorator(function):
print('Inside decorator, arg1: ' + str(arg1))
def wrapper(*args, **kwargs):
print('Inside wrapper, arg1: ' + str(arg1))
# execute decorated function:
result = function(*args, **kwargs)
return result
return wrapper
return decorator
@decorator_wrapper('a')
def MyFunction():
print('This is my function')
MyFunction()
这将导致:
Inside decorator_wrapper, arg1: a
Inside decorator, arg1: a
Inside wrapper, arg1: a
This is my function
更多这里: https://www.geeksforgeeks.org/decorators-with-parameters-in-python/
添加回答
举报