Definizione (modulo, pacchetto e import). Un modulo è un file .py: le funzioni, le classi e le variabili definite al suo livello più esterno diventano suoi attributi. Un pacchetto è una cartella di moduli.
import math # si usa math.sqrt(2)
import math as m # alias: m.sqrt(2)
from math import sqrt, pi # si usa sqrt(2) direttamente
from math import * # importa tutto: sconsigliato (nomi che si sovrascrivono)
Esempio. Dopo from math import sqrt, sqrt(16) restituisce 4.0; con import math si scrive math.sqrt(16).
Al primo import il modulo viene eseguito una volta; gli import successivi riusano lo stesso oggetto modulo. Il modulo viene cercato nella cartella dello script, poi nella libreria standard e nei pacchetti installati (sys.path).
Moduli propri
geometria.pypython
PI = 3.141592653589793defarea_cerchio(r):
return PI * r * r
if __name__ == "__main__":
# eseguito solo con "python geometria.py", non quando il modulo viene importatoprint(area_cerchio(1))
main.pypython
from geometria import area_cerchio
print(area_cerchio(2))
Definizione (blocco principale di un modulo). La variabile __name__ vale "__main__" nel file avviato da riga di comando e il nome del modulo negli altri casi. Il blocco finale serve a mettere nello stesso file funzioni riusabili e codice di prova.
Esempio. Importando il modulo geometria, __name__ vale "geometria"; con python geometria.py vale "__main__".
Struttura consigliata di uno script:
python
defmain():
...
if __name__ == "__main__":
main()
Libreria standard: i moduli più usati
Definizione (moduli più usati della libreria standard)
Modulo
Contenuto
math
funzioni matematiche, costanti, isclose, gcd
random
random(), randint(a, b) (estremi inclusi), choice, shuffle, seed
sys
sys.argv (argomenti da riga di comando), sys.exit(), sys.getrecursionlimit()
Esempio. Dopo random.seed(42), random.randint(1, 6) restituisce sempre 6: il seme rende i risultati riproducibili.
python
import random
random.seed(42) # risultati riproducibili
dado = random.randint(1, 6)
Pacchetti esterni (non nella libreria standard) si installano con pip install nome.
Errori tipici
Chiamare un proprio file come un modulo standard (random.py, math.py): l'import carica il proprio file al posto di quello della libreria.
Codice di prova al livello del modulo senza il blocco if __name__ == "__main__": che viene eseguito a ogni import.
from modulo import * che sovrascrive nomi già definiti.
Versione ripasso
Moduli
Un modulo è un file .py. Un pacchetto è una cartella di moduli.
python
import math # math.sqrt(2)import math as m # m.sqrt(2)from math import sqrt, pi # sqrt(2) direttamentefrom math import * # sconsigliato
Al primo import il modulo viene eseguito una volta; gli import successivi riusano l'oggetto modulo (cercato in sys.path).
Moduli propri
Il blocco if __name__ == "__main__": (codice di prova eseguito solo avviando il file) mette nello stesso file funzioni riusabili e prove. La variabile __name__ vale "__main__" nel file avviato da riga di comando e il nome del modulo negli altri casi.
Struttura consigliata di uno script:
python
defmain():
...
if __name__ == "__main__":
main()
Libreria standard: i moduli più usati
Modulo
Contenuto
math
funzioni matematiche, costanti, isclose, gcd
random
random(), randint(a, b) (estremi inclusi), choice, shuffle, seed