Decoriamo!

Qui ho seri problemi di traduzione… non ho idea di come rendere in italiano il termine decorator quindi lo lascio così!

I decorators in Python sono dei costrutti sintattici in grado di trasformare funzioni e dichiarazioni di metodi: non aggiungono niente al linguaggio, qualsiasi cosa abbiamo intenzione di fare con un decorator è pure realizzabile senza, quello che cambia è la… pitonicità!

Esempio:

>>>def deco(f):
...    def modded_f(*args):
...        print "sto per sommare..."
...        return f(*args)
...    return modded_f
...
>>>
>>>def sum(a,b):
...    return a+b
...
>>>
>>>sum(3,4)
7
>>>decorated_sum = deco(sum)
>>>decorated_sum(3,4)
sto per sommare...
7

Abbiamo così un inutilissimo wrapper… vediamo come implementarlo più elegantemente con un decorator

>>>@deco
...def decorated_sum(a,b):
...    return a+b
...
>>>
>>>decorated_sum(2,3)
sto per sommare...
5

I decorators, introdotti in Python 2.4 (sono sempre in ritardo!) per specifiche ragioni illustrate nel PEP 318, contrariamente alle apparenze che trapelano dall’esempio sopra sono utlissimi per costruire wrappers, annotare o registrare funzioni. Nelle prossime puntate vedrò di apportare esempi utili all’umanità tutta…

Advertisements

2 thoughts on “Decoriamo!

  1. Pingback: Decoriamo! - 2a puntata « MasciBlog
  2. Pingback: Decoriamo! - 3a puntata « MasciBlog

Comments are closed.