In questo articolo imparerai a creare e importare moduli personalizzati in Python. Inoltre, troverai diverse tecniche per importare e utilizzare moduli personalizzati e integrati in Python.
Video: moduli Python
Cosa sono i moduli in Python?
I moduli fanno riferimento a un file contenente dichiarazioni e definizioni Python.
Un file contenente codice Python, ad esempio:, example.py
è chiamato modulo e il suo nome modulo sarebbe example
.
Usiamo moduli per suddividere programmi di grandi dimensioni in piccoli file gestibili e organizzati. Inoltre, i moduli forniscono la riusabilità del codice.
Possiamo definire le nostre funzioni più utilizzate in un modulo e importarlo, invece di copiare le loro definizioni in programmi diversi.
Creiamo un modulo. Digita quanto segue e salvalo come example.py
.
# Python Module example def add(a, b): """This program adds two numbers and return the result""" result = a + b return result
Qui abbiamo definito una funzione add()
all'interno di un modulo denominato example
. La funzione prende due numeri e restituisce la loro somma.
Come importare moduli in Python?
Possiamo importare le definizioni all'interno di un modulo in un altro modulo o nell'interprete interattivo in Python.
Usiamo la import
parola chiave per farlo. Per importare il nostro modulo definito in precedenza example
, digitiamo quanto segue nel prompt di Python.
>>> import example
Questo non importa i nomi delle funzioni definite example
direttamente nella tabella dei simboli corrente. Importa solo il nome del modulo example
lì.
Usando il nome del modulo possiamo accedere alla funzione usando l' .
operatore punto . Per esempio:
>>> example.add(4,5.5) 9.5
Python ha tonnellate di moduli standard. Puoi controllare l'elenco completo dei moduli standard Python e i loro casi d'uso. Questi file si trovano nella directory Lib all'interno della posizione in cui hai installato Python.
I moduli standard possono essere importati nello stesso modo in cui importiamo i nostri moduli definiti dall'utente.
Esistono vari modi per importare i moduli. Sono elencati di seguito …
Dichiarazione di importazione di Python
Possiamo importare un modulo usando l' import
istruzione e accedere alle definizioni al suo interno usando l'operatore punto come descritto sopra. Ecco un esempio.
# import statement example # to import standard module math import math print("The value of pi is", math.pi)
Quando esegui il programma, l'output sarà:
Il valore di pi greco è 3,141592653589793
Importa con rinomina
Possiamo importare un modulo rinominandolo come segue:
# import module by renaming it import math as m print("The value of pi is", m.pi)
Abbiamo rinominato il math
modulo come m
. Questo può farci risparmiare tempo durante la digitazione in alcuni casi.
Nota che il nome math
non è riconosciuto nel nostro ambito. Quindi, math.pi
non è valido ed m.pi
è l'implementazione corretta.
Istruzione Python from … import
Possiamo importare nomi specifici da un modulo senza importare il modulo nel suo insieme. Ecco un esempio.
# import only pi from math module from math import pi print("The value of pi is", pi)
Qui abbiamo importato solo l' pi
attributo dal math
modulo.
In questi casi, non usiamo l'operatore punto. Possiamo anche importare più attributi come segue:
>>> from math import pi, e >>> pi 3.141592653589793 >>> e 2.718281828459045
Importa tutti i nomi
Possiamo importare tutti i nomi (definizioni) da un modulo utilizzando il seguente costrutto:
# import all names from the standard module math from math import * print("The value of pi is", pi)
Qui abbiamo importato tutte le definizioni dal modulo matematico. Ciò include tutti i nomi visibili nel nostro ambito tranne quelli che iniziano con un trattino basso (definizioni private).
Importare tutto ciò con il simbolo asterisco (*) non è una buona pratica di programmazione. Ciò può portare a definizioni duplicate per un identificatore. Inoltre ostacola la leggibilità del nostro codice.
Percorso di ricerca del modulo Python
Durante l'importazione di un modulo, Python esamina diversi punti. L'interprete cerca prima un modulo integrato. Quindi (se il modulo integrato non viene trovato), Python cerca in un elenco di directory definite in sys.path
. La ricerca è in questo ordine.
- La directory corrente.
PYTHONPATH
(una variabile d'ambiente con un elenco di directory).- La directory predefinita dipendente dall'installazione.
>>> import sys >>> sys.path ('', 'C: \ Python33 \ Lib \ idlelib', 'C: \ Windows \ system32 \ python33.zip', 'C: \ Python33 \ DLLs ',' C: \ Python33 \ lib ',' C: \ Python33 ',' C: \ Python33 \ lib \ site-packages ')
We can add and modify this list to add our own path.
Reloading a module
The Python interpreter imports a module only once during a session. This makes things more efficient. Here is an example to show how this works.
Suppose we have the following code in a module named my_module
.
# This module shows the effect of # multiple imports and reload print("This code got executed")
Now we see the effect of multiple imports.
>>> import my_module This code got executed >>> import my_module >>> import my_module
We can see that our code got executed only once. This goes to say that our module was imported only once.
Now if our module changed during the course of the program, we would have to reload it.One way to do this is to restart the interpreter. But this does not help much.
Python provides a more efficient way of doing this. We can use the reload()
function inside the imp
module to reload a module. We can do it in the following ways:
>>> import imp >>> import my_module This code got executed >>> import my_module >>> imp.reload(my_module) This code got executed
The dir() built-in function
Possiamo usare la dir()
funzione per trovare i nomi definiti all'interno di un modulo.
Ad esempio, abbiamo definito una funzione add()
nel modulo example
che avevamo all'inizio.
Possiamo usare dir
nel example
modulo nel modo seguente:
>>> dir(example) ('__builtins__', '__cached__', '__doc__', '__file__', '__initializing__', '__loader__', '__name__', '__package__', 'add')
Qui possiamo vedere un elenco ordinato di nomi (insieme a add
). Tutti gli altri nomi che iniziano con un trattino basso sono attributi Python predefiniti associati al modulo (non definiti dall'utente).
Ad esempio, l' __name__
attributo contiene il nome del modulo.
>>> import example >>> example.__name__ 'example'
Tutti i nomi definiti nel nostro attuale spazio dei nomi possono essere trovati utilizzando la dir()
funzione senza alcun argomento.
>>> a = 1 >>> b = "hello" >>> import math >>> dir() ('__builtins__', '__doc__', '__name__', 'a', 'b', 'math', 'pyscripter')