3 consigli ESSENZIALI per Migliorare il Tuo Codice Python

Pubblicato da Michele Saba

Vediamo assieme 3 consigli essenziali per migliorare la qualità del vostro codice Python. Questo vi permetterà di rendere i vostri programmi più veloci, comprensibili e mantenibili nel tempo tramite l'impiego di tecniche e standard universalmente accettati dalla community di Python.

Si tratta quindi di un video pensato per tutti quelli sviluppatori che avvicinandosi a questo linguaggio intendono scrivere codice quanto più pythonico possibile, magari perché intendono avviare un progetto open source con questo linguaggio o perché intendono iniziare a lavorare, magari per un'azienda o come freelancers con questo linguaggio e quindi sanno che è importante essere conformi con gli standard in uso, e in generale per tutti i developers con un livello di esperienza che potremo definire da principiante ad intermedio.


PEP-8 - Guida allo Stile per il Codice Python

Iniziamo subito partendo dalla guida allo stile ufficiale del codice Python, chiamata PEP-8

Per chi non avesse mai sentito questo acronimo, PEP sta per Python Enhancement Proposals, ovvero Proposte per il Miglioramento di Python. Come il nome stesso suggerisce, le PEP sono dei documenti che descrivono i dettagli di eventuali nuove caratteristiche da implementare nel linguaggio: queste caratteristiche verranno quindi valutate, e se approvate diventeranno standard o nel caso di nuove funzionalità, parte di Python stesso a partire dalle versioni successive. La PEP-8 è uno di questi documenti, uno dei primi ad essere stato scritto e approvato. Venne creato nel 2001 da Barry Warsaw, Nick Coghlan e Guido van Rossum, il creatore stesso di Python.

Al suo interno possiamo trovare specifiche relative ad indentazione e layout, ai nomi da assegnare a variabili, funzioni e classi, docstrings, lunghezza di ogni riga di codice espressa in caratteri, come commentare il codice e via discorrendo.

Si tratta quindi di un documento molto interessante da leggere con attenzione e su cui tornare spesso nel caso abbiate qualche dubbio sul come procedere con la scrittura del vostro codice.

Come per tutte le altre PEP, potete trovare il link per leggere il documento integrale in Inglese all'indirizzo https://www.python.org/dev/peps/. Potete trovare svariate estensioni per gli Editor più famosi che vi permettono di ottenere un'analisi automatica del vostro codice per assicurarvi che questo sia conforme, e anche package installabili tramite PIP, come ad esempio pycodestyle:

pip install pycodestyle

Supponiamo di voler analizzare un file chiamato style_test.py, contenente il seguente codice:

import random, time

# Hello World
print("Hello World!")

Ci basta quindi dare il comando:

>>> pycodestyle style_test.py

Ed ecco che in output otteniamo i seguenti messaggi, che ci informano delle modifiche che è necessario applicare al nostro script perché questo sia conforme con gli standard della PEP:

style_test.py:1:14: E401 multiple imports on one line
style_test.py:3:1: E265 block comment should start with '# '


Come Rimuovere Duplicati da una Lista con i Set

Supponiamo di avere una lista di elementi e di dover rimuovere da questa tutti gli eventuali duplicati.
Uno dei più semplici ed efficienti modi di fare ciò prevede l'utilizzo del tipo di dato set, ovvero elenchi non ordinati di elementi unici.
Supponiamo di avere una lista di numeri assegnata ad una variabile lst:

lst = [99, 76, 55, 21, 76, 76, 11, 99, 44, 33, 20, 19, 17, 17, 15]

Possiamo visionarne il contenuto e notare che al suo interno contiene al momento 15 elementi:

lst
[99, 76, 55, 21, 76, 76, 11, 99, 44, 33, 20, 19, 17, 17, 15]

len(lst)
15

Possiamo ora definire una nuova variabile s e usare set, passandogli lst, per creare un set a partire dalla nostra lista:

s = set(lst)

type(s)
<class 'set'>

Possiamo ora e analizzare s, per notare che disponiamo ora di un elenco non ordinato di 11 elementi unici. Gli elementi "doppi" non sono stati aggiunti al set:

s
{33, 99, 11, 76, 44, 15, 17, 19, 20, 21, 55}

len(s)
11

Possiamo operare con i dati del set, ad esempio usando un ciclo for:

>>> for el in s:
...         print(el)
... 
33
99
11
76
44
15
17
19
20
21
55

E chiaramente qualora ne avessimo bisogno, possiamo riconvertire il set in lista:

lst = list(s)

print(lst)
[33, 99, 11, 76, 44, 15, 17, 19, 20, 21, 55]


Unpacking

Supponiamo di voler scompattare una lista in modo da assegnare a ciascun elemento una variabile.

lst = ["alpha", "beta", "gamma", "delta", "epsilon"]

Conoscendo il numero di elementi presenti nella lista, in questo caso 5, ci basta fare:

a, b, c, d, e = lst

Ed ecco che abbiamo quindi scompattato la nostra lista:

>>> c
'gamma'

>>> e
'epsilon'

>>> b
'beta'

Ciò è possibile con qualunque iterabile! Proviamo ad esempio, con una stringa:

>>> b = "asd"

>>> p
'a'

>>> o
's'

>>> i
'd'

Questa tecnica è perfetta e comoda quando ci troviamo a dover scompattare iterabili di piccole dimensioni e soprattutto, in cui conosciamo esattamente il numero di elementi. Proviamo a ri-scompattare la nostra lista lst con un numero non congruo di variabili:

>>> q, w, e, r = lst
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 4)

Ecco che ottieniamo un errore piuttosto esplicito: troppi valori da scompattare!

In casi come questi possiamo far riferimento alla star notation di Python.

Estendiamo la nostra lista aggiungendo qualche valore:

>>> lst.extend([76, 33, 12, 44, 5])

>>> lst
['alpha', 'beta', 'gamma', 'delta', 'epsilon', 76, 33, 12, 44, 5]

Possiamo ora fare:

a, b, c, *resto = lst

E analizzando il contenuto delle 6 variabili, ecco che la lista è stata scompattata con successo: 

>>> a
'alpha'

>>> b
'beta'

>>> c
'gamma'

>>> resto
['delta', 'epsilon', 76, 33, 12, 44, 5]

E volendo, avremo potuto fare qualcosa di analogo anche in questo modo:

>>> a, *valori_restanti = lst

>>> a
'alpha'

>>> valori_restanti
['beta', 'gamma', 'delta', 'epsilon', 76, 33, 12, 44, 5]

Bene bella gente, questo era tutto, spero che questo consigli siano stati di vostro gradimento!

Mi raccomando: Iscrivetevi al canale YouTube se giá non siete iscritti, ci vediamo nel prossimo video e come al solito... Happy Coding!


Vuoi imparare Python come un/a professionista? Dai uno sguardo ai nostri