在 Python 3.7+ 中,有没有办法创建一个采用类似方法的装饰器:
@some_dec_fun
def fun():
...
Run Code Online (Sandbox Code Playgroud)
并转换并执行类似的东西
def fun():
with some_dec_fun():
...
Run Code Online (Sandbox Code Playgroud)
您不能使用装饰器“进入”另一个函数。但是您可以使用装饰器在特定上下文中执行“整个”装饰函数。例如,以下将some_function在上下文管理器中执行该函数some_context_manager:
def my_decorator(func):
def wrap():
with some_context_manager():
func()
return wrap()
@my_decorator
def some_function:
...
Run Code Online (Sandbox Code Playgroud)