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变量,能实现吗??请问
3 回答
繁星点点滴滴
TA贡献1803条经验 获得超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
TA贡献1780条经验 获得超1个赞
作为参数传进去吧。
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
添加回答
举报
0/150
提交
取消