Форум сайта python.su
0
нужно использовать функцию, например, funct как с декоратором,например, decor, так из без него.
Как бы сделать так, чтобы функцию funct два раза не определять?
$ cat test.py #!/usr/bin/python def decor(f): def wrapped(x): return f(x)+x return wrapped def funct(x): return x**2 print funct(2) @decor def funct(x): return x**2 print funct(2) $ ./test.py 4 6
Офлайн
2
Вторым параметром в функц. передавать что-то вроде:
ned_decor
def wrapped(x, ned_decor): return f(x)+x if ned_decor else f(x)
Отредактировано mironich (Июнь 10, 2013 21:58:37)
Офлайн
88
def a(): pass @smwdec def b(): a()
Офлайн
173
Можно так:
def decor(f): def wrapped(x): return f(x)+x return wrapped def funct(x): return x**2 decorated_funct = decor(funct) print funct(2), decorated_funct(2)
Офлайн