2.1 Introduzione ai pacchetti
I pacchetti sono un modo per strutturare i moduli in directory. Un pacchetto è una directory che contiene un file __init__.py
e uno o più moduli. Il file __init__.py
può essere vuoto o contenere il codice di inizializzazione del pacchetto.
Esempio di struttura di un pacchetto/directory
mypackage/
__init__.py
module1.py
module2.py
Contenuto del file __init__.py |
---|
|
Contenuto del file module1.py |
---|
|
Contenuto del file module2.py |
---|
|
Esempio di codice che utilizza le funzioni di questo pacchetto:
import mypackage
print(mypackage.func1()) # Output: Function 1
print(mypackage.func2()) # Output: Function 2
Proviamo ora a scrivere il nostro pacchetto, e nel frattempo capiamo come funzionano quelli degli altri.
2.2 Creiamo il nostro pacchetto passo dopo passo
Passo 1: Creazione della struttura del pacchetto
Il primo passo è creare la struttura delle cartelle e dei file per il tuo pacchetto. Come esempio, creeremo un pacchetto chiamato mypackage
che contiene due moduli: module1.py
e module2.py
.
Esempio di struttura del pacchetto:
mypackage/
__init__.py
module1.py
module2.py
Descrizione dei file:
-
__init__.py
: Questo file può essere vuoto o contenere il codice di inizializzazione del pacchetto. È necessario affinché Python consideri la cartella come un pacchetto. -
module1.py
emodule2.py
: Questi file contengono funzioni, classi e variabili che vuoi includere nel tuo pacchetto.
Passo 2: Scrivere il codice per i moduli
Scriviamo un semplice codice per i nostri moduli.
module1.py
def func1():
return "Function 1 from module1"
module2.py
def func2():
return "Function 2 from module2"
__init__.py
Per importare le funzioni dai nostri moduli al livello del pacchetto, le aggiungeremo in __init__.py
.
from .module1 import func1
from .module2 import func2
Ora, quando importi il pacchetto, le funzioni func1
e func2
saranno disponibili direttamente.
Passo 3: Testare il pacchetto
Crea un file test.py
nella stessa cartella in cui si trova la cartella mypackage
, e utilizza il pacchetto in questo file per i test.
test.py
import mypackage
print(mypackage.func1()) # Output: Function 1 from module1
print(mypackage.func2()) # Output: Function 2 from module2
Esegui test.py
per assicurarti che il tuo pacchetto funzioni correttamente.
2.3 Utilizzo della funzione dir()
Quando importi un modulo o un pacchetto, puoi utilizzare la funzione dir()
per ottenere un elenco di tutti gli attributi e metodi disponibili in quel modulo. Questo è particolarmente utile se stai lavorando con un modulo nuovo o sconosciuto e vuoi rapidamente sapere quali funzioni e classi offre.
Esempio: Esplorazione del modulo standard math
Consideriamo un esempio di utilizzo di dir()
per esplorare il modulo standard math
.
import math
print(dir(math))
Questo codice importa il modulo math
e stampa un elenco di tutti gli attributi e metodi disponibili. Il risultato sarà simile a questo:
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan',
'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1',
'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf',
'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod',
'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
Questo elenco include tutte le funzioni e costanti definite nel modulo math
, come sin
, cos
, tan
, pi
e altre.
Utilizzo di dir()
per moduli personalizzati
Puoi anche utilizzare dir()
per i moduli personalizzati (i tuoi). Supponiamo che tu abbia un file mymodule.py
con il seguente contenuto:
# mymodule.py
def greet(name):
return f"Hello, {name}!"
pi = 3.14159
Puoi importare questo modulo e utilizzare dir()
per esplorare il suo contenuto:
import mymodule
print(dir(mymodule))
Il risultato sarà il seguente:
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__',
'greet', 'pi']
L'elenco include 8 attributi speciali (racchiusi da trattini bassi) del modulo mymodule
, e alla fine ci sono il tuo metodo greet
e la variabile pi
.
GO TO FULL VERSION