Un modulo è un singolo file .py; un pacchetto è una directory di moduli. Gli import ti permettono di utilizzare il codice da altri moduli, organizzando un programma in pezzi riutilizzabili.
Moduli e import
(): a + b
PI =
Un modulo è un singolo file .py; un pacchetto è una directory di moduli. Gli import ti permettono di utilizzare il codice da altri moduli, organizzando un programma in pezzi riutilizzabili.
(): a + b
PI =
# main.py — different ways to import
import math_utils # import the whole module
math_utils.add(2, 3) # access via the module name
from math_utils import add, PI # import specific names
add(2, 3) # use directly
from math_utils import add as plus # import with an alias
import numpy as np # common aliasing convention
mypackage/
__init__.py ← marks it as a package (can be empty)
module_a.py
subpackage/
__init__.py
module_b.py
from mypackage.module_a import something
from mypackage.subpackage.module_b import other
Il file __init__.py marca una directory come pacchetto (e può eseguire codice di inizializzazione del pacchetto o definire cosa from package import * espone).
if __name__ == "__main__"def main():
print("running as a script")
if __name__ == "__main__": # True only when run directly, not when imported
main()
Questo permette a un file di agire sia come modulo importabile che come script eseguibile — il codice al suo interno viene eseguito solo quando il file viene eseguito direttamente (python file.py), non quando viene importato. Un idioma Python quasi universale.
import sys
sys.path # the list of directories Python searches for imports
# includes: the current directory, installed packages (site-packages), stdlib
import os, json, datetime # standard library — "batteries included"
import requests # third-party — installed via pip from PyPI
Moduli e pacchetti sono il modo in cui organizzi il codice Python in unità riutilizzabili e mantenibili piuttosto che in un unico file gigante — fondamentale per qualsiasi progetto non banale.
Comprendere gli stili di import, la struttura dei pacchetti (__init__.py), l'idioma if __name__ == "__main__" (comportamento doppio script/modulo), e come Python trova i moduli (sys.path) è essenziale per strutturare progetti, riutilizzare il codice e utilizzare la vasta libreria standard e l'ecosistema PyPI.
Gli errori di import e la confusione sulla struttura sono ostacoli iniziali comuni che questa conoscenza risolve.