Passer au contenu principal
eLearner.app
Module 7 · Leçon 4 sur 428/36 dans le cours~10 min
Leçons du module (4/4)

import e moduli

Un modulo in Python è semplicemente un file .py. Per usare il codice di un modulo da un altro file, lo si importa.

Forme di import

Python
# 1) import del modulo intero
import math
math.sqrt(16)        # 4.0
math.pi              # 3.14159...

# 2) import di nomi specifici
from math import sqrt, pi
sqrt(16)             # ora direttamente disponibile
pi

# 3) import con alias
import numpy as np      # convenzione idiomatica
from datetime import datetime as dt

# 4) import "star" (sconsigliato)
from math import *      # inquina il namespace, evita

Dove cerca Python i moduli

Python cerca i moduli in sys.path, che include:

  1. la directory dello script in esecuzione,
  2. le directory in PYTHONPATH,
  3. le librerie installate (site-packages).
Python
import sys
sys.path     # lista di directory

Creare un modulo

Crea mio_modulo.py:

Python
# mio_modulo.py
PI = 3.14159

def area_cerchio(r):
    return PI * r * r

Da un altro file nella stessa directory:

Python
import mio_modulo
mio_modulo.area_cerchio(5)   # 78.53975

from mio_modulo import area_cerchio, PI

if __name__ == "__main__":

Quando uno script viene eseguito direttamente, la sua variabile speciale __name__ vale "__main__". Quando lo stesso file viene importato come modulo, __name__ vale il nome del modulo.

Python
# strumento.py

def fai_qualcosa():
    print("lavoro!")

if __name__ == "__main__":
    # eseguito solo se lanci `python strumento.py`
    # NON viene eseguito se qualcuno importa questo file
    fai_qualcosa()

È il pattern standard per file che possono fungere sia da modulo riutilizzabile sia da script eseguibile.

Package: cartelle di moduli

Una directory con un file __init__.py (anche vuoto) diventa un package importabile:

Code
mio_pkg/
    __init__.py
    utenti.py
    pagamenti.py
Python
from mio_pkg import utenti
from mio_pkg.utenti import crea_utente

Namespace dei moduli e importazioni

Quando importi un modulo come import math, crei un namespace isolato. Questo evita conflitti di nomi. Se scrivi from math import sqrt, porti la funzione direttamente nel namespace globale corrente: da quel momento puoi chiamare sqrt() invece di math.sqrt(). Attenzione a non sovrascrivere funzioni built-in del linguaggio!

Prova tu

Exercice#python.m7.l4.e1
Tentatives : 0Chargement…

Importa la funzione `sqrt` dal modulo `math` (con `from math import sqrt`), poi calcola la radice di 144 e assegnala a `r`. Valuta `r`.

Chargement de l'éditeur…
Afficher l'indice

from math import sqrt

Solution disponible après 3 tentatives

Esercizio di ripasso

Exercice#python.m7.l4.e2
Tentatives : 0Chargement…

Importa il modulo `random` con alias `rnd` (`import random as rnd`), poi imposta il seed a 42 con rnd.seed(42), e valuta rnd.randint(1, 100).

Chargement de l'éditeur…
Afficher l'indice

import random as rnd

Solution disponible après 3 tentatives

Sfida aggiuntiva

Exercice#python.m7.l4.e3
Tentatives : 0Chargement…

Importa le funzioni `sin` e `cos` direttamente dal modulo `math` usando `from ... import ...`. Calcola la somma di `sin(0)` e `cos(0)`, salvala in `trig_sum` e valutala.

Chargement de l'éditeur…
Afficher l'indice

sin(0) fa 0.0, cos(0) fa 1.0. La somma fa 1.0. Usa from math import sin, cos.

Solution disponible après 3 tentatives