Форум сайта python.su
0
Есть код взятый из http://habrahabr.ru/blogs/python/46306/ :
def empty(f):
return None
@empty
def func(x, y):
return x + y
print func # напечатает: None
Офлайн
2
Простой пример (декорирующая функция возвращает None, в итоге func тоже оказывается равным None)Вы это осмыслили?
Офлайн
6
при обработке должно вывести “”“None”“”
Офлайн
0
Daevaornempty() возвращает None понимаю. Но не понимаю, почему func оказывается равным None! Почему?
Простой пример (декорирующая функция возвращает None, в итоге func тоже оказывается равным None)
Вы это осмыслили?
Офлайн
1
декоратор
@empty
def func(x, y):
...
def func(x, y):
...
func = empty(func)
Отредактировано (Июнь 28, 2009 15:15:23)
Офлайн
0
вы сократили следующий код:
def empty(f):
return None
def func(x, y):
return x + y
func = empty(func)
print func
def func(x, y):
return x + y
Отредактировано (Июнь 28, 2009 17:53:27)
Офлайн
0
j2aСпасибо за ссылочку! Кажется начинаю догонять:
см PEP 318
@dec2
@dec1
def func(arg1, arg2, ...):
pass
def func(arg1, arg2, ...):
pass
func = dec2(dec1(func))
Отредактировано (Июнь 28, 2009 19:58:52)
Офлайн
1
qmanне только результатов. Он создает “обертку” вокруг функции, так что можно модифицировать входные и выходные значение, проверять их, делать какие-либо операции в зависимости от действий и прочее.
то есть декоратор создает правила преобразования (из примера dec2 и dec1) результатов функции func?
Офлайн
0
извините за тупизм
@dec1
def func(arg1, arg2, ...):
pass
Офлайн
1
qmanчтобы ответить, нужно видеть код декоратора, потому что он может менять как входные, так и выходные.
извините за тупизмdec1 модифицирует входные или выходные значения функции func?@dec1
def func(arg1, arg2, ...):
pass
Офлайн