猿问

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

fromfunctoolsimportwraps
deftest(func):
@wraps(func)
definner_func():
inner_obj='inner_obj'
print(inner_obj)
returnfunc()
returninner_func
@test
deftest_func():
returnFalse
a=test_func()print(a)
我想在test_func中获取装饰器的inner_obj变量,能实现吗??请问
DIEA
浏览 2243回答 2
2回答

慕的地8271018

当然可以了。你可以给test_func加一个参数嘛。在inner_func中调用test_func的时候把参数传过去fromfunctoolsimportwrapsdeftest(func):@wraps(func)definner_func():inner_obj='inner_obj'print(inner_obj)returnfunc(inner_obj)#returninner_func@testdeftest_func(obj):print(obj)#returnFalsea=test_func()print(a)

慕盖茨4494581

作为参数传进去吧。fromfunctoolsimportwrapsdefdecorator(func):@wraps(func)definner_func():inner_obj='inner_obj'print("ininner_func:{}".format(inner_obj))returnfunc(inner_obj)returninner_func@decoratordeffunc_with_param(*args):print("infunc_with_parm:{}".format(args[0]))func_with_param()#调用#ininner_func:inner_obj#infunc_with_parm:inner_obj
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答