Moduli e libreria standard
In questa pagina 4
Moduli
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.
python
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)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.141592653589793
def area_cerchio(r):
return PI * r * r
if __name__ == "__main__":
# eseguito solo con "python geometria.py", non quando il modulo viene importato
print(area_cerchio(1))main.pypython
from geometria import area_cerchio
print(area_cerchio(2))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.
Struttura consigliata di uno script:
python
def main():
...
if __name__ == "__main__":
main()Libreria standard: i moduli più usati
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'importcarica 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.