Salta ai contenuti
Manuale LogoManuale Logo

Moduli

In un programma grande, mettere tutto il codice in un unico file lo rende difficile da leggere e modificare.

I moduli permettono di dividere il codice in file separati, organizzati per argomento. Ogni file .py è un modulo. Python include inoltre centinaia di moduli pronti nella libreria standard.

Per usare un modulo, importalo all’inizio del file:

import math # Importa il modulo "math" (matematica)
print(math.pi) # 3.141592653589793: il pi greco
print(math.sqrt(16)) # 4.0: radice quadrata
print(math.floor(3.7)) # 3: arrotondamento verso il basso
print(math.ceil(3.2)) # 4: arrotondamento verso l'alto

math.sqrt indica la funzione sqrt contenuta nel modulo math.

Importare solo quello che ti serve con from ... import

Sezione intitolata “Importare solo quello che ti serve con from ... import”

Se conosci già le funzioni necessarie, puoi importarle direttamente e omettere il nome del modulo nelle chiamate:

from math import pi, sqrt, floor # Importo solo queste tre cose
print(pi) # 3.141592653589793
print(sqrt(25)) # 5.0
print(floor(4.9)) # 4

Puoi importare tutto con *, ma questa forma è sconsigliata:

from math import * # Importa TUTTO dal modulo math
print(sin(0)) # Funziona, ma...

Così non è più chiaro da quale modulo provengano le funzioni. Inoltre, nomi uguali provenienti da moduli diversi possono sovrascriversi.

Con as puoi assegnare un alias a un modulo o a una funzione, per abbreviare un nome o evitare conflitti:

import math as m # D'ora in poi scrivo "m" invece di "math"
print(m.pi) # 3.14159...
from math import sqrt as radice_quadrata # Rinomino la funzione
print(radice_quadrata(9)) # 3.0

Alcune librerie molto usate hanno soprannomi convenzionali che tutti usano:

import numpy as np # Convenzione universale per NumPy
import pandas as pd # Convenzione universale per Pandas

Un modulo è un file .py. Crea, per esempio, calcolatrice.py:

# calcolatrice.py: il mio modulo personale
def somma(a, b):
return a + b
def sottrai(a, b):
return a - b
def moltiplica(a, b):
return a * b
pi = 3.14159

Poi in un altro file nella stessa cartella:

# main.py: uso il mio modulo
import calcolatrice
print(calcolatrice.somma(3, 4)) # 7
print(calcolatrice.pi) # 3.14159

Quando importa un modulo, Python esegue il codice contenuto nel file. Il codice di test potrebbe quindi partire anche durante un’importazione.

Per evitarlo, racchiudi il codice di test in questo blocco:

calcolatrice.py
def somma(a, b):
return a + b
if __name__ == "__main__":
# Questo viene eseguito SOLO se avvii calcolatrice.py direttamente
# NON viene eseguito se qualcuno fa "import calcolatrice"
print(somma(3, 4)) # Test

__name__ == "__main__" è True solo nel file avviato direttamente, non nei moduli importati.

Modulo A cosa serve
math Funzioni matematiche (radici, trigonometria, logaritmi)
random Numeri casuali
datetime Date e orari
os Interazione con il sistema operativo (file, cartelle)
json Leggere e scrivere file JSON
re Espressioni regolari (ricerche avanzate nel testo)
time Misurare il tempo, mettere in pausa il programma
import random
print(random.random()) # Numero decimale casuale tra 0.0 e 1.0
print(random.randint(1, 10)) # Numero intero casuale tra 1 e 10 (inclusi)
print(random.choice(["mela", "banana", "uva"])) # Sceglie un elemento a caso dalla lista
lista = [1, 2, 3, 4, 5]
random.shuffle(lista) # Mescola la lista (modifica la lista originale)
print(lista) # Ordine casuale, es: [3, 1, 5, 2, 4]
import os
print(os.getcwd()) # Mostra in quale cartella ti trovi ora
print(os.listdir(".")) # Elenca i file nella cartella corrente
print(os.path.exists("file.txt")) # True se il file esiste, False altrimenti