Scrivere codice come un Pythonista: Python Idiomatico

Lo Zen di Python (1)

Questi sono i princìpi guida di Python, sebbene siano aperti alle interpretazioni. Un certo senso dell'umorismo è richiesto per una loro corretta interpretazione.

D'altronde, se stai utilizzando un linguaggio di programmazione che richiama il nome di un gruppo di sketch comici, dovresti avere innato tale senso dell'umorismo.

Lo Zen di Python (2)

Questo particolare "poema" partì come una sorta di gioco ma racchiude al suo interno molte delle verità che stanno alla base di Python. Lo Zen di Python è stato formalizzato nel PEP 20, com'è possibile evincere dal suo abstract:

Puoi decidere da solo se sei un "Pythoneer" o un "Pythonista". I termini hanno connotazioni alquanto differenti.

In caso di dubbi:

   1 import this

Provandolo in un interprete interattivo Python:

   1 >>> import this

Ecco un altro easter egg:

   1 >>> from __future__ import braces
   2   File "<stdin>", line 1
   3 SyntaxError: not a chance

Che gruppo di buontemponi! :)

Stile di scrittura del codice: la leggibilità è importante

Cerca di rendere leggibili e non ambigui i programmi che scrivi.

PEP 8: Guida stilistica per la scrittura di codice Python

Può essere utile la lettura di:

PEP = Python Enhancement Proposal (proposta di miglioramento per Python)

Un PEP è un documento di design che fornisce informazioni alla community di Python, o che descrive una nuova caratteristica del linguaggio, così come i sui processi e il suo ambiente.

La community di Python dispone di propri standard relativi a come dovrebbe essere strutturato del codice: essi sono scritti nel PEP 8. Tali standard sono differenti rispetto a quelli validi nell'ambito di altre community, come quelle relative a C, C++, C#, Java, VisualBasic e così via.

Poiché l'indentazione e gli spazi sono molto importanti in Python, la Guida stilistica per la scrittura di codice Python si avvicina a uno standard de facto. Sarebbe saggio, dunque, aderire a tale guida, anche perché molti progetti open source e (si spera) di taglio domestico la seguono piuttosto strettamente.

Gli spazi 1

Gli spazi 2

   1 def make_squares(key, value=0):
   2     """Return a dictionary and a list..."""
   3     d = {key: value}
   4     l = [key, value]
   5     return d, l

Identificatori

Righe lunghe e continuazioni

Mantieni le righe a un massimo di 80 caratteri di lunghezza.

Usa la continuazione sottintesa della riga all'interno di parentesi:

   1 def __init__(self, first, second, third,
   2              fourth, fifth, sixth):
   3     output = (first + second + third
   4               + fourth + fifth + sixth)

Usa i backslash come ultima risorsa:

   1 VeryLong.left_hand_side \
    = even_longer.right_hand_side()

L'uso dei backslash è delicato: essi debbono necessariamente concludere la riga nella quale si trovano. Se aggiungi uno spazio dopo il backslash, esso non funzionerà più. Inoltre, essi sono decisamente poco gradevoli visivamente.

Stringhe lunghe

Le stringhe letterali adiacenti sono concatenate dal parser:

   1 >>> print 'o' 'n' "e"
   2 one

Gli spazi tra i letterali non sono obbligatori, ma aumentano la leggibilità. Qualsiasi tipo di virgolette può essere utilizzato:

   1 >>> print 't' r'\/\/' """o"""
   2 t\/\/o

La stringa preceduta da una "r" è una stringa "raw". I backslash non sono valutati come caratteri di escape all'interno delle stringhe raw. Tali stringhe sono utili all'interno di espressioni regolari o nei path all'interno di un filesystem Windows.

Nota come gli oggetti stringa nominali non vengano concatenati:

   1 >>> a = 'three'
   2 >>> b = 'four'
   3 >>> a b
   4   File "<stdin>", line 1
   5     a b
   6       ^
   7 SyntaxError: invalid syntax

Questo perché la concatenazione automatica è una caratteristica del parser/compilatore, non dell'interprete Python. Hai bisogno di usare l'operatore "+" per concatenare stringhe a runtime.

   1 text = ('Le stringhe lunghe possono essere composte da '
   2         'diverse stringhe piccole.')

Le parentesi consentono un'implicita continuazione di riga.

Le stringhe multiriga fanno uso delle triple virgolette:

   1 """Triple
   2 virgolette
   3 doppie"""

   1 '''\
   2 Triple
   3 virgolette
   4 singole\
   5 '''

Nell'ultimo esempio (triple virgolette singole) nota come i backslash vengano usati come escape sulle nuove righe. Ciò elimina la necessità di righe aggiuntive, mantenendo al contempo sia il testo che le virgolette giustificati a sinistra. I backslash debbono essere posizionati a fine riga.

CookBook/PythonIdiomatico (last edited 2008-03-08 16:30:11 by moaiamorfo)