Witam
Mam następującą funkcję:
def abc(x)
return x
Mam teraz dodać taki decorator, aby zostało zwrócone nie x, tylko -x. Ma to wyglądać tak:
@my_decorator
def abc(x)
return x
Jak to mozna zrobic?
Witam
Mam następującą funkcję:
def abc(x)
return x
Mam teraz dodać taki decorator, aby zostało zwrócone nie x, tylko -x. Ma to wyglądać tak:
@my_decorator
def abc(x)
return x
Jak to mozna zrobic?
Mógłbym Ci napisać od razu gotowca, ale zrobię coś lepszego i pozwolę Ci samemu na to wpaść (czyli zrozumieć):
przystępna odpowiedź: http://stackoverflow.com/questions/739654/understanding-python-decorators
ew. dokumentacja: http://docs.python.org/reference/compound_stmts.html#function
hmmm sam sie ucze python'a i ok kod dziala...
if __name__ == "__main__":
def dec_minus(value):
def wrapper(value):
return -1 * value
return wrapper
@dec_minus
def abs(value):
return value
print(abs(2))
mam tylko pytanie dlaczego funkcja wrapper musi tez posiadac arg. value skoro jest zagniezdzona w dec_minus wiec powinna posiadac to sama zmienna?
I jak to zrobic za pomoca klas?
probowalem ale zawsze byl problem z arg.
def minus_result(FUNKCJA_DO_OPAKOWANIA):
def wrapper(*args, **kwargs):
return -FUNKCJA_DO_OPAKOWANIA(*args, **kwargs)
return wrapper
@minus_result
def my_abs(number):
return -number if number < 0 else number
print([ my_abs(n) for n in range(-5, 5) ])
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.