Мой код очень прост. это для испытания, но я получаю большую ошибку: nonetype не отозваны:Декораторы Python Я встречаю странную ошибку
def deco(when):
def wrapper(fun):
print 'before call myfun'
fun()
print 'after call myfun'
return wrapper
@deco('a')
def fun():
print 'in fun1'
fun()
Но когда она слегка модифицирована, ошибка удаляется:
def deco(when):
def wrapper(fun):
def dec():
print 'before call myfun'
fun()
print 'after call myfun'
return dec
return wrapper
@deco('a')
def fun():
print 'in fun'
fun()
Можете ли вы сказать причину? Я был совершенно смущен.
Более того, во втором кодовом блоке, как оболочка methon() может видеть переменную 'fun', переменная 'fun' не находится в контексте (arg верхнего methond 'when' вместо 'fun '), я тоже смущен.
Благодаря вашей помощи
Исправьте углубление. –