MasciBlog

Riflessioni semiserie dal cubicolo

Decoriamo!

Pubblicato da masci su 29 Aprile 2008

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…

2 Risposte a “Decoriamo!”

  1. [...] – 2a puntata Nel post precedente abbiamo visto cos’è un decorator in Python, ora cercheremo di dare un senso alla sua [...]

  2. [...] – 3a puntata Dopo aver visto cosa sono i decorators in Python ed uno dei tanti modi di implementarli, approfondiamo l’argomento scrivendo un [...]

Lascia un commento

XHTML: Puoi usare questi tag: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>