假设我有一个自定义装饰器,我希望它能够正确处理装饰函数的文档字符串。问题是:我的装饰器添加了一个参数。
from functools import wraps
def custom_decorator(f):
@wraps(f)
def wrapper(arg, need_to_do_more):
'''
:param need_to_do_more: if True: do more
'''
args = do_something(arg)
if need_to_do_more:
args = do_more(args)
return f(args)
return wrapper
Run Code Online (Sandbox Code Playgroud)
您可以看到参数实际上并未传递给装饰函数,而是由包装器使用 - 这在这里可能相关,也可能不相关。
如何正确处理记录附加参数?包装器接受额外的参数是一个好习惯,还是我应该避免它?
或者我应该使用不同的解决方案,例如: