python被装饰的函数怎么获取其装饰器的变量或返回值?

from functools import wraps

def test(func):
    @wraps(func)
    def inner_func():
        inner_obj = 'inner_obj'
        print(inner_obj)
        return func()
    return inner_func


@test
def test_func():
    return False

a = test_func()
print(a)

我想在test_func中获取装饰器的inner_obj变量,能实现吗??请问

慕少森
浏览 653回答 3
3回答

繁星点点滴滴

当然可以了。 你可以给 test_func 加一个参数嘛。在 inner_func 中调用 test_func 的时候把参数传过去 from functools import wraps def test(func): @wraps(func) def inner_func(): inner_obj = 'inner_obj' print(inner_obj) return func(inner_obj) # return inner_func @test def test_func(obj): print(obj) # return False a = test_func() print(a)

慕神8447489

作为参数传进去吧。 from functools import wraps def decorator(func): @wraps(func) def inner_func(): inner_obj = 'inner_obj' print("in inner_func: {}".format(inner_obj)) return func(inner_obj) return inner_func @decorator def func_with_param(*args): print("in func_with_parm: {}".format(args[0])) func_with_param() # 调用 # in inner_func: inner_obj # in func_with_parm: inner_obj

呼唤远方

Python装饰器:python真正入门的鉴定标准
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python