CodeGym /Corsi /Python SELF IT /Creazione del tuo pacchetto

Creazione del tuo pacchetto

Python SELF IT
Livello 19 , Lezione 1
Disponibile

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

# __init__.py
from .module1 import func1
from .module2 import func2
Contenuto del file module1.py

# module1.py
def func1():
    return "Function 1"
Contenuto del file module2.py

# module2.py
def func2():
    return "Function 2"

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 e module2.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.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION