CodeGym /Corsi /Python SELF IT /Importazione dei moduli

Importazione dei moduli

Python SELF IT
Livello 19 , Lezione 0
Disponibile

1.1 Introduzione ai moduli

Un modulo in Python è un file con estensione .py che contiene codice. I moduli permettono di suddividere un grande codice in parti più piccole e gestibili. Ogni modulo può contenere funzioni, classi e variabili, oltre a eseguire un certo codice al momento dell'importazione.

Esempio di un semplice modulo

Creiamo un modulo mymodule.py:


# mymodule.py

def greet(name):
    return f"Hello, {name}!"
            
pi = 3.14159
        

Ora questo modulo può essere importato e utilizzato in un altro file.

1.2 Importazione dei moduli

Python offre diversi modi per importare i moduli. Analizziamoli uno per uno.

Importazione dell'intero modulo

Il sintassi generale di questa operazione è:


import modulo

Questo metodo importa l'intero modulo e puoi usare le sue funzioni e variabili specificando il nome del modulo.


import modulo

print(modulo.greet("Alice"))  # Output: Hello, Alice!
print(modulo.pi)  # Output: 3.14159
        

Abbiamo già fatto qualcosa di simile con il modulo math, ricordi?


import math

print(math.ceil(13 / 7))  # arrotondamento verso l'alto
print(math.floor(13 / 7))  # arrotondamento verso il basso
        

Importazione di elementi specifici dal modulo

Puoi importare non tutto ciò che c'è nel modulo, ma solo alcuni suoi elementi. Il sintassi generale di questa operazione è:


from modulo import func, var

Questo metodo importa solo funzioni, classi o variabili specifiche dal modulo, il che ti permette di usarle senza specificare il nome del modulo.


from mymodule import greet, pi

print(greet("Bob"))  # Output: Hello, Bob!
print(pi)  # Output: 3.14159
        

Importazione del modulo con un alias

Il sintassi generale di questa operazione è:


import modulo as alias

Questo metodo permette di importare un modulo e assegnargli un altro nome, il che può essere utile per abbreviare nomi di moduli lunghi o per risolvere conflitti di nomi.


import mymodule as mm

print(mm.greet("Charlie"))  # Output: Hello, Charlie!
print(mm.pi)  # Output: 3.14159
        

Importazione di tutti gli elementi dal modulo

Il sintassi generale di questa operazione è:


from modulo import *

Questo metodo importa tutte le funzioni, le classi e le variabili dal modulo, il che permette di usarle senza specificare il nome del modulo. Tuttavia, l'uso di questo metodo non è consigliato, poiché può causare conflitti di nomi e rendere difficile la lettura del codice.


from mymodule import *

print(greet("Dave"))  # Output: Hello, Dave!
print(pi)  # Output: 3.14159
        

1.3 Sotto il cofano del processo di importazione

Ordine di ricerca dei moduli

Quando importi un modulo, Python lo cerca in un ordine specifico:

  1. La directory corrente: Python cerca prima il modulo nella directory corrente da cui è stato eseguito lo script.
  2. Variabile d'ambiente PYTHONPATH: Se il modulo non viene trovato nella directory corrente, Python lo cerca nelle directory indicate nella variabile d'ambiente PYTHONPATH.
  3. Directory standard: Se il modulo non viene ancora trovato, Python lo cerca nelle directory standard, come le directory indicate in sys.path.

Esempio:


import sys

for path in sys.path:
    print(path)
        

Importazione locale e globale

L'importazione dei moduli può essere eseguita sia a livello globale (all'inizio del file) che a livello locale (all'interno di una funzione o di un metodo).

Importazione globale

L'importazione globale viene eseguita all'inizio del file e rende il modulo importato disponibile in tutto il file.


import math

def calculate_circle_area(radius):
    return math.pi * radius ** 2
        

Importazione locale

L'importazione locale viene eseguita all'interno di una funzione o di un metodo e rende il modulo importato disponibile solo in quella funzione o metodo.


def calculate_square_root(x):
    import math
    return math.sqrt(x)
    
print(calculate_square_root(16))
        

L'importazione locale può essere utile per ridurre il tempo di caricamento del modulo o per prevenire conflitti di nomi.

1.4 Importazione dinamica

L'importazione dinamica permette di importare i moduli durante l'esecuzione del programma. Questo può essere utile quando è necessario importare moduli in base all'input dell'utente o altre condizioni dinamiche.

Il sintassi generale di questa operazione è:


module = __import__("modulo")

Per esempio, importiamo il modulo math in questo modo.


module_name = "math"
module = __import__(module_name)
print(module.sqrt(16))  # Output: 4.0

Lavorare con il codice successivo è simile all'uso di import as, quando al modulo math viene assegnato un alias module.

1.5 Accesso agli attributi del modulo usando la funzione getattr

La funzione getattr permette di ottenere dinamicamente attributi da un modulo (o qualsiasi oggetto). Può essere utile nei casi in cui i nomi degli attributi non sono noti in anticipo o possono cambiare durante l'esecuzione del programma.

Sintassi della funzione getattr:


getattr(object, name, default = None)

Dove object è l'oggetto da cui ottenere l'attributo, name: è una stringa che contiene il nome dell'attributo, e default: è il valore restituito nel caso in cui l'attributo con il nome specificato non esista. Il valore predefinito per il parametro default è None.

Esempio di utilizzo della funzione getattr:


import math

# Otteniamo l'attributo sqrt dal modulo math
sqrt_function = getattr(math, 'sqrt')

print(sqrt_function(25))  # Output: 5.0

# Tentiamo di ottenere un attributo inesistente, restituiamo il valore predefinito
non_existent_attr = getattr(math, 'non_existent', 'default_value')

print(non_existent_attr)  # Output: default_value
        

In questo esempio usiamo la funzione getattr per ottenere la funzione sqrt dal modulo math, quindi invochiamo questa funzione per calcolare la radice quadrata del numero 25. Nel caso in cui l'attributo con il nome specificato non esista, viene restituito il valore predefinito default_value.

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