back to top

I moduli in Python

In Python un modulo รจ essenzialmente un file che contiene del codice scritto in questo linguaggio. I moduli sono caratterizzati dallโ€™estensione ".py", quindi al file "istruzione.py" corrisponderร  il nome modulo "istruzione". Lo scopo dei moduli รจ duplice: essi contengono istruzioni e definizioni che possono essere riutilizzate quante volte si vuole senza la necessitร  di doverle riscrivere, basterร  "importare" i moduli dove necessari; inoltre, si rivelano particolarmente comodi per gestire facilmente grandi quantitร  di codice.

Creazione di un modulo

La procedura di creazione di un modulo si riassume nella scrittura del codice che esso รจ destinato a contenere e nel salvataggio del file con estensione ".py. Per quanto riguarda la sintassi da utilizzare le regole sono quelle viste fino ad ora, quindi un modulo potrebbe contenere, ad esempio, un codice come questo, destinato a svolgere una semplice moltiplicazione tramite una funzione ("mul()") a cui passare come parametri 2 fattori:

# Definire il codice di un modulo
def mul(x, y):
  """Semplice applicazione che moltiplica
  2 valori e restituisce il risultato"""

  prodotto = x * y
  return prodotto

Una volta salvato il codice in un file, che chiameremo per esempio "app.py", avremo a disposizione un modulo importabile allโ€™interno di qualsiasi programma.

Importazione di un modulo

Per importare un modulo si deve utilizzare la keyword import seguita dal nome del modulo e non da quello del file che lo rappresenta, quindi omettendo lโ€™estensione ".py"; fatto questo le istruzioni in esso presenti diventeranno disponibili per lโ€™applicazione nella quale รจ stato importato. Dunque, nel caso del modulo precedentemente creato, dovremo far ricorso ad una sintassi come la seguente:

# Importazione di un modulo
>>> import app

Dopo lโ€™importazione, per utilizzare le istruzioni contenute nel modulo dovremo eseguire unโ€™operazione che tecnicamente consiste nellโ€™introdurre i nomi delle funzioni definite in "app" nella tabella dei simboli corrente. Si tratta in pratica di rendere utilizzabili le funzioni del modulo, cosa possibile concatenando il nome del modulo alla funzione desiderata tramite il giร  noto operatore ".". Nel nostro caso il modulo "app" presenta unicamente la funzione "mul()" che richiameremo in questo modo:

# Importazione di un modulo e chiamata alla funzione
>>> import app
>>> app.mul(6,5)
30

Un modo efficiente di gestire i moduli รจ quello di rinominarli con lo scopo di risparmiare tempo nella digitazione del codice. "App" potrebbe essere per esempio rinominato in "a" in questo modo grazie alla clausola as:

# Importare e rinominare un modulo 
>>> import app as a

Si faccia perรฒ attenzione, perchรฉ una volta rinominato un modulo il nuovo nome dovrร  essere utilizzato anche nella chiamata alle funzioni, diversamente Python produrrร  un errore non riconoscendo piรน il nome iniziale del modulo:

# Richiamare funzioni di un modulo rinominato
>>> import app as a
>>> app.mul(8,4)
Traceback (most recent call last):
  File "<pyshell#16>", line 1, in <module>
    app.mul(8,4)
NameError: name 'app' is not defined
>>> a.mul(8,4)
32

Gestire le chiamate alle istruzioni

Un modulo puรฒ contenere numerose istruzioni e definizioni, puรฒ quindi capitare che non vi sia la necessitร  di importarlo per intero, richiamandone soltanto alcuni elementi. Per far questo utilizzeremo la parola chiave from seguita dal nome del modulo e da "import" seguito a sua volta dal nome del costrutto che desideriamo importare. Se il nostro modulo contenesse piรน istruzioni e volessimo importare soltanto la funzione "mul()" dovremmo quindi procedere come segue:

# Importare una sola funzione di un modulo 
>>> from app import mul
>>> mul(3,5)
15

Si noti come in questo caso sia possibile utilizzare la funzione senza la necessitร  di concatenarne il nome a quello del modulo.

Nel caso in cui si vogliano importare piรน istruzioni di un modulo escludendone altre basterร  utilizzare il costrutto visto in precedenza, dove i nomi delle istruzioni scelte andranno separati con una virgola:

# Importartazione multipla di istruzioni da un modulo 
>>> from app import mul, seconda_istruzione, terza_istruzione

Moduli standard in Python

Per comoditร  degli sviluppatori Python prevede un gran numero di moduli standard, sostanzialmente dei moduli forniti nativamente dal linguaggio per svolgere le operazioni piรน svariate. Questi moduli sono importabili tramite la stessa sintassi utilizzabile per i moduli definiti dagli utenti.

Per proporre un esempio possiamo prendere in considerazione il modulo calendar, come suggerisce il nome si tratta di una soluzione che consente di gestire calendari tramite dei metodi dedicati, anchโ€™essi forniti nativamente da Python. Come impostazione predefinita, seguendo la cosiddetta "convenzione europea" "calendar" prevede che il primo giorno della settimana sia il lunedรฌ (associato allโ€™indice "0") con domenica come ultimo giorno (indice "6"). Per verificare quanto detto รจ possibile importare il modulo e poi richiamare il metodo firstweekday() che mostra in output lโ€™indice relativo al primo giorno della settimana:

# Importazione del modulo calendar e visualizzazione dell'indice
# del primo giorno della settimana 
>>> import calendar
>>> calendar.firstweekday()
0

Volendo modificare lโ€™impostazione di default รจ possibile ricorrere ad un altro metodo, setfirstweekday(), che accetta come parametro lโ€™indice del giorno della settimana con cui si vuol far cominciare la settimana. Nel caso in cui la scelta dovesse ricadere sulla domenica, seguendo una convenzione usuale in Paesi come gli Stati Uniti, dovremmo procedure nel modo seguente:

# Importazione del modulo calendar e modifica dell'indice
# del primo giorno della settimana 
>>> import calendar
>>> setfirstweekday(6)
>>> calendar.firstweekday()
6

Cosรฌ come i moduli definiti dagli utenti anche i moduli standard possono essere rinominati. Nello stesso modo รจ possibile importare soltanto parti specifiche di un modulo o tutte le definizioni e le istruzioni che lo compongono.

Pubblicitร 
Claudio Garau
Claudio Garau
Web developer, programmatore, Database Administrator, Linux Admin, docente e copywriter specializzato in contenuti sulle tecnologie orientate a Web, mobile, Cybersecurity e Digital Marketing per sviluppatori, PA e imprese.