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
提交
取消
