Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 10, 2013 21:46:14

eiler13
Зарегистрирован: 2013-02-25
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

применять декоратор не всегда

нужно использовать функцию, например, 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 Июнь 10, 2013 21:58:28

mironich
От:
Зарегистрирован: 2011-05-23
Сообщения: 118
Репутация: +  2  -
Профиль   Отправить e-mail  

применять декоратор не всегда

Вторым параметром в функц. передавать что-то вроде:
ned_decor

def wrapped(x, ned_decor):
         return f(x)+x if ned_decor else f(x)



Отредактировано mironich (Июнь 10, 2013 21:58:37)

Офлайн

#3 Июнь 10, 2013 22:01:03

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

применять декоратор не всегда

def a():
    pass
@smwdec
def b():
    a()

Офлайн

#4 Июнь 11, 2013 07:00:39

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

применять декоратор не всегда

Можно так:

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)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version