Найти - Пользователи
Полная версия: применять декоратор не всегда
Начало » Python для новичков » применять декоратор не всегда
1
eiler13
нужно использовать функцию, например, 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
mironich
Вторым параметром в функц. передавать что-то вроде:
ned_decor
def wrapped(x, ned_decor):
         return f(x)+x if ned_decor else f(x)
Shaman
def a():
    pass
@smwdec
def b():
    a()
reclosedev
Можно так:
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)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB