L'Istruzione `import` di Python: Moduli, Namespace e Best Practice
In Python, import è come porti codice da un modulo in un altro. Non è "main import" — quello non è un termine Python. Ecco come funziona davvero, con i pattern che userai quotidianamente.
Sintassi Import Base
import nome_modulo
Questo carica nome_modulo e lo lega a una variabile nel tuo namespace corrente. Accedi ai suoi contenuti con notazione punto:
import math
math.sqrt(16) # 4.0
math.pi # 3.14159...
Pattern Import Comuni
1. Importa Modulo (Default Raccomandato)
import pandas as pd
import numpy as np
df = pd.DataFrame({'a': [1,2,3]})
arr = np.array([1,2,3])
Vantaggi: Esplicito, leggibile, evita conflitti nomi, mostra origine.
2. Importa Nomi Specifici
from math import sqrt, pi
sqrt(16) # 4.0 — niente prefisso necessario
pi # 3.14159...
Usa quando: Usi pochi nomi pesantemente. Evita: from modulo import * (inquinamento namespace).
3. Importa con Alias
import matplotlib.pyplot as plt
import seaborn as sns
Convenzioni standard (pd, np, plt, sns, tf, torch) rendono codice immediatamente leggibile.
4. Import Condizionali / Lazy
# Importa dipendenze pesanti solo quando serve
def analizza_dati():
import pandas as pd # Import locale — avvio più veloce se inusato
return pd.read_csv('dati.csv')
Come Funziona Import Sotto il Cofano
- Controlla
sys.modules— se già caricato, restituisce modulo in cache - Trova modulo via
sys.path(dir corrente, PYTHONPATH, site-packages, stdlib) - Esegue codice modulo — esegue statement top-level (def, class, assegnamenti)
- Crea oggetto modulo — namespace per globali del modulo
- Cache in
sys.modules - Leva nome nel namespace dell'importatore (per statement import)
Percorso Ricerca Moduli (sys.path)
import sys
sys.path # ['', '/usr/lib/python3.11', '/usr/lib/python3.11/lib-dynload',
# '/home/user/.local/lib/python3.11/site-packages', ...]
''= directory script corrente (o CWD se interattivo)- Installa pacchetti:
pip install pacchetto→ site-packages - Virtual env isolano
site-packages
Pacchetti e Sottomoduli
import pacchetto.sottomodulo
from pacchetto import sottomodulo
from pacchetto.sottomodulo import funzione
Directory con __init__.py = pacchetto. __init__.py può esporre sottomoduli:
# pacchetto/__init__.py
from .sottomodulo import funzione_pubblica
__all__ = ['funzione_pubblica']
Pitfall Comuni e Soluzioni
| Problema | Causa | Soluzione |
|---|---|---|
ModuleNotFoundError | Non installato / env sbagliato / typo | pip install, controlla venv, controlla spelling |
ImportError: cannot import name | Import circolare / nome non in modulo | Ristruttura, sposta import dentro funzioni |
| Conflitto nomi | from x import * o file locale nasconde stdlib | Non nominare file math.py, random.py; usa import espliciti |
| Errore import relativo | Esecuzione modulo come script | Esegui come python -m pacchetto.modulo o usa import assoluti |
Best Practice
- Libreria standard prima, poi terze parti, poi locali — ogni gruppo alfabeticamente
- Un import per riga (PEP 8)
- Usa
import modulosufrom modulo import * - Alias: Usa standard community (pd, np, plt, tf, torch)
- Evita manipolazione path runtime — usa packaging corretto (
pyproject.toml,pip install -e .) - Type checking:
from __future__ import annotations+ guardieTYPE_CHECKING
Esempio: Blocco Import Pulito
# Libreria standard
import json
import os
from pathlib import Path
from typing import List, Optional
# Terze parti
import numpy as np
import pandas as pd
import requests
# Locali
from myproject.config import settings
from myproject.models import User
from myproject.utils import logger
Il sistema import di Python è potente, esplicito, prevedibile — una volta capito il modello namespace. La regola d'oro: rendi ovvio da dove viene ogni nome. Il tuo te futuro (e i colleghi) ti ringrazieranno.
Valuta e cambio
- Cambio Cem Mil Cruzeiros: valuta brasiliana obsoleta
- Come convertire corone in dollari USA
- Quando comprare euro per la vacanza
- L'uso delle carte di credito americane in Francia
- Conversione Valuta in Israele
- 800 Corone Norvegesi (NOK) in USD: ~$74 ai tassi attuali
- Come convertire dollari in dinari del Bahrein
- Prezzi gas in Inghilterra: costi attuali e contesto mercato (2023)
- Principali colture da reddito del Brasile
