Importa il modulo in Python con esempi

Sommario:

Anonim

Quali sono i moduli in Python?

Un modulo è un file con codice python. Il codice può essere sotto forma di variabili, funzioni o classe definita. Il nome del file diventa il nome del modulo.

Ad esempio, se il nome del file è guru99.py, il nome del modulo sarà guru99 . Con la funzionalità del modulo, puoi suddividere il codice in file diversi invece di scrivere tutto all'interno di un file.

In questo tutorial imparerai:

  • Quali sono i moduli in Python?
  • Modulo di importazione Python
  • Come creare e importare un modulo in Python?
  • Importazione di una classe in Python
  • Utilizzando from per importare il modulo
  • Importazione di tutto dal modulo
  • Utilizzando il modulo di importazione
  • Utilizzo di import *
  • La funzione dir ()
  • Pacchetti
  • PythonModuleSearchPath
  • Utilizzo dell'alias del modulo nell'importazione
  • Importazioni assolute e relative in Python
  • UsingAbsoluteImports
  • UsingRelativeImports

Cos'è il modulo di importazione Python?

Un file è considerato come un modulo in python. Per utilizzare il modulo, devi importarlo utilizzando la parola chiave import . La funzione o le variabili presenti all'interno del file possono essere utilizzate in un altro file importando il modulo. Questa funzionalità è disponibile in altre lingue, come dattiloscritto, JavaScript, java, ruby, ecc.

Come creare e importare un modulo in Python?

Ora creeremo un modulo e lo importeremo in un altro file.

Ecco il flusso per creare e importare il modulo come mostrato nello screenshot:

Segui i passaggi indicati per creare un modulo in Python.

La struttura delle cartelle utilizzata per testare il codice è la seguente:

modtest/test.pydisplay.py

Passaggio 1) Crea un file e chiamalo test.py

Passaggio 2) All'interno di test.py creare una funzione chiamata display_message ()

Def display_message():return "Welcome to Guru99 Tutorials!"

Passaggio 3) Ora crea un altro file display.py.

Passaggio 4) All'interno di display.py importa il file moduletest.py, come mostrato di seguito:

import test

Durante l'importazione, non è necessario menzionare test.py ma solo il nome del file.

Step5)

Quindi puoi chiamare la funzione display_message () da test.py all'interno di display.py, devi usare module_name.function_name.

Ad esempio test.display_message ().

Import testprint(test.display_message())

Passaggio 6)

Quando esegui display.py, otterrai il seguente output:

Welcome to Guru99 Tutorials!

Importazione di una classe in Python

In precedenza, abbiamo visto un semplice modulo con una funzione. Qui creerà una classe e farà riferimento alla classe all'interno di un altro file.

La struttura delle cartelle per testare il codice è la seguente:

myproj/Car.pydisplay.py

Crea un file chiamato Car.py con il codice seguente:

Nome file: Car.py

class Car:brand_name = "BMW"model = "Z4"manu_year = "2020"def __init__(self, brand_name, model, manu_year):self.brand_name = brand_nameself.model = modelself.manu_year = manu_yeardef car_details(self):print("Car brand is ", self.brand_name)print("Car model is ", self.model)print("Car manufacture year is ", self.manu_year)def get_Car_brand(self):print("Car brand is ", self.brand_name)def get_Car_model(self):print("Car model is ", self.model)

Nel file Car.py sono presenti gli attributi brand_name, model e manu_year. Le funzioni definite all'interno della classe sono car_details (), get_Car_brand (), get_Car_model ().

Usiamo ora il file Car.py come modulo in un altro file chiamato display.py.

Nome file: display.py

import Carcar_det = Car.Car("BMW","Z5", 2020)print(car_det.brand_name)print(car_det.car_details())print(car_det.get_Car_brand())print(car_det.get_Car_model())

Produzione:

BMWCar brand is BMWCar model is Z5Car manufacture year is 2020Car brand is BMWCar model is Z5

Quindi possiamo accedere a tutte le variabili e funzioni da Car.py utilizzando il modulo Car.

Utilizzando from per importare il modulo

È possibile importare solo una piccola parte del modulo, ovvero solo le funzioni richieste e i nomi delle variabili dal modulo invece di importare il codice completo.

Quando si desidera importare solo elementi specifici, è possibile utilizzare la parola chiave "from" per importare ciò che si desidera.

Quindi la sintassi è

from module import your function_name , variables,… etc.

La struttura delle cartelle utilizzata per testare il codice è la seguente:

modtest/test.pydisplay.py

In test.py ci sono 2 funzioni come mostrato:

Nome file: test.py

defdisplay_message():return "Welcome to Guru99 Tutorials!"def display_message1():return "All about Python!"

Ora vuoi la funzione display_message (). È possibile accedere direttamente alla funzione o alla variabile che si sta importando come mostrato di seguito:

Nome file: display.py

from test import display_messageprint(display_message())

Produzione:

Welcome to Guru99 Tutorials!

Ora se ti capita di utilizzare la funzione display_message1 (), verrà generato un errore che la funzione non è definita come mostrato di seguito:

from test import display_messageprint(display_message1())

Produzione:

Traceback (most recent call last):File "display.py", line 3, in print(display_message1())Name Error: name 'display_message1' is not defined

Importando tutto dal modulo

Import consente di importare l'intero modulo utilizzando import seguito dal nome del modulo, ovvero il nome del file o la libreria da utilizzare.

Sintassi:

Import module

O usando

from module import *

La struttura delle cartelle utilizzata per testare il codice è la seguente:

modtest/test.pydisplay.py

Di seguito sono riportati i dettagli del codice all'interno di test.py

my_name = "Guru99"my_address = "Mumbai"defdisplay_message():return "Welcome to Guru99 Tutorials!"def display_message1():return "All about Python!"

Utilizzando il modulo di importazione

Utilizzando solo il nome del modulo di importazione, per fare riferimento alle variabili e alle funzioni all'interno del modulo, deve anteporre il nome del modulo.

Esempio

Nome file: display.py

Import testprint(test.display_message())print(test.display_message1())print(test.my_name)print(test.my_address)

Il test del nome del modulo viene utilizzato per fare riferimento alla funzione e alle variabili all'interno del test del modulo.

Produzione:

Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai

Utilizzo di import *

Vediamo un esempio utilizzando import * . Utilizzando import * , le funzioni e le variabili sono direttamente accessibili, come mostrato nell'esempio seguente:

from test import *print(display_message())print(display_message1())print(my_name)print(my_address)

Produzione:

Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai

La funzione dir ()

Dir () è una funzione incorporata in python. Dir () restituisce tutte le proprietà e i metodi, comprese le proprietà incorporate dell'oggetto specificato.

Quindi, quando dir () è usato sul modulo, ti darà le variabili, le funzioni che sono presenti all'interno del modulo.

Ecco un esempio funzionante di dir () su un modulo. Abbiamo una classe chiamata Car.py, importiamo Car e assegniamo a dir () per vedere l'output.

La struttura delle cartelle per testare il codice sarà la seguente:

test prop/Car.pytest.py

Nome file: Car.py

class Car:brand_name = "BMW"model = "Z4"manu_year = "2020"def __init__(self, brand_name, model, manu_year):self.brand_name = brand_nameself.model = modelself.manu_year = manu_yeardef car_details(self):print("Car brand is ", self.brand_name)print("Car model is ", self.model)print("Car manufacture year is ", self.manu_year)def get_Car_brand(self):print("Car brand is ", self.brand_name)def get_Car_model(self):print("Car model is ", self.model)

Nome file: test.py

import Carclass_contents = dir(Car)print(class_contents)

L'output ci fornisce il nome della classe e tutte le funzioni definite in Car.py.

Puoi anche provare a usare dir () su un modulo integrato disponibile in Python. Proviamo lo stesso sul modulo json come mostrato nell'esempio seguente. Mostrerà tutte le proprietà e i metodi disponibili nel modulo json .

Import jsonjson_details = dir(json)print(json_details)

Produzione:

['JSONDecodeError', 'JSONDecoder', 'JSONEncoder', '__all__', '__author__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__version__', '_default_decoder', '_default_encoder', 'codecs', 'decoder', 'detect_encoding', 'dump', 'dumps', 'encoder', 'load', 'loads', 'scanner']

Pacchetti

Un pacchetto è una directory con tutti i moduli definiti al suo interno. Per fare in modo che un interprete Python lo tratti come un pacchetto, la tua directory dovrebbe avere init.pyfile. Init.py rende la directory come un pacchetto. Ecco il layout del pacchetto su cui lavoreremo.

Il nome del pacchetto è il mio pacchetto . Per iniziare a lavorare con il pacchetto, crea una directory chiamata package /. All'interno della directory, crea un file vuoto chiamato __init__.py. Crea altri 3 file module1.py, module2.py e module3.py e definisci le funzioni come mostrato nello screenshot. Ecco i dettagli di module1.py, module2.py e module3.py

module1.py

def mod1_func1():print("Welcome to Module1 function1")def mod1_func2():print("Welcome to Module1 function2")def mod1_func3():print("Welcome to Module1 function3")

module2.py

def mod2_func1():print("Welcome to Module2 function1")def mod2_func2():print("Welcome to Module2 function2")def mod2_func3():print("Welcome to Module2 function3")

module3.py

def mod3_func1():print("Welcome to Module3 function1")def mod3_func2():print("Welcome to Module3 function2")def mod3_func3():print("Welcome to Module3 function3")

La confezione è pronta per l'uso. Ora chiama il pacchetto all'interno di uno qualsiasi dei tuoi file come mostrato di seguito: test.py:

Qui, mypackage.module1 viene importato e gli viene assegnato un nome alias come mod1. Allo stesso modo, puoi usare altri moduli module2.py e module3.py dal mio pacchetto.

import mypackage.module1 as mod1print(mod1.mod1_func1())print(mod1.mod1_func2())print(mod1.mod1_func2())

Produzione:

Welcome to Module1 function1NoneWelcome to Module1 function2NoneWelcome to Module1 function2None

Abbiamo appena dimostrato il pacchetto con un semplice modulo con funzioni al suo interno. Secondo il tuo progetto, puoi anche creare pacchetti con sotto-pacchetti. Sottocartelle / con moduli con classi definite.

Percorso di ricerca del modulo Python

Durante l'esecuzione, quando python trova il nome del modulo di importazione , l'interprete cerca di individuare il modulo. Cerca il modulo nell'elenco dei moduli incorporati. Successivamente, le directory definite all'interno di sys.path.

Per riassumere, l'interprete esegue la seguente ricerca per individuare il modulo:

  1. Nella tua directory corrente.
  2. In nell'elenco dei moduli integrati
  3. All'interno delle directory sys.path

È possibile ottenere i dettagli di sys.path importando il modulo sys e stampare il file sys.path. Ti darà l'elenco delle directory come mostrato di seguito:

importsysprint(sys.path)

Produzione:

['Python Latest\\task2', 'Users\\AppData\\Local\\Programs\\Python\\Python37\\python37.zip', 'Users\\AppData\\Local\\Programs\\Python\\Python37\\DLLs']

È inoltre possibile modificare il percorso e mantenere le directory secondo le proprie esigenze.

Utilizzo dell'alias del modulo nell'importazione

Puoi anche convertire il nome del modulo in una forma più breve assegnandogli un nome alias. L'alias può essere eseguito utilizzando la parola chiave.

Sintassi:

import filename as alias name

La struttura delle cartelle per testare il codice sarà la seguente:

Mod test/test.pydisplay.py

Di seguito è riportato il codice all'interno di test.py

my_name = "Guru99"my_address = "Mumbai"def display_message():return "Welcome to Guru99 Tutorials!"def display_message1():return "All about Python!"

Ora utilizzerà un alias per test.py in display.py

Import test as tprint(t.display_message())print(t.display_message1())print(t.my_name)print(t.my_address)

L'alias utilizzato per il modulo di test è t. Quindi la funzione e le variabili da test.py possono essere referenziate usando l'alias t.

Produzione:

Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai

Importazioni assolute e relative in Python

Ora sai come importare un file come modulo all'interno di un altro file. Vediamo ora come gestire i file disponibili nelle cartelle. I file nelle cartelle possono essere importati utilizzando importazioni assolute o relative.

Considera di avere la struttura delle cartelle del tuo progetto, come mostrato di seguito:

La cartella principale è il mio progetto /. Ha due sottocartelle package1 e package2.

La cartella package1 ha due moduli, module1.py e module2.py.

La cartella package2 ha una classe myclass.py, un sub-package subpkg con module3.py e l'ultimo module4.py.

  • In module1.py, c'è una funzione chiamatamyfunc1.
  • In module2.py, c'è una funzione chiamata myfunc2.
  • In module3.py, c'è una funzione chiamata myfunc3.
  • In module4.py, c'è una funzione chiamata myfunc4.

Utilizzo delle importazioni assolute

Per le importazioni assolute, è necessario aggiungere l'intero percorso del modulo direttamente dalla cartella principale del progetto.

Vediamo ora come utilizzare le importazioni assolute per fare riferimento alle funzioni presenti in ogni modulo.

Per lavorare con functionmyfunc1, dovrai importare come segue:

from package1.module1 import myfunc1orfrom package1 import module1module1.myfunc1()

Per lavorare con la funzione myfunc3 dovrai importare come segue:

from package1.subpkg.module3 import myfunc3orfrom package1.subpkg import module3module3.myfunc3()

Vantaggi e svantaggi dell'utilizzo di importazioni assolute

Ecco i vantaggi dell'utilizzo di importazioni assolute:

  • Diventa facile risalire ai moduli per il controllo del codice.
  • Facile da usare e molto semplice.
  • Se il progetto viene spostato in un percorso diverso, le importazioni rimarranno comunque le stesse.

Svantaggi dell'utilizzo di importazioni assolute

Ecco gli svantaggi dell'utilizzo di importazioni assolute:

Svantaggi:

  • Il percorso di importazione può diventare molto lungo nel caso in cui i moduli siano nidificati e se il nome dei moduli è lungo.

Utilizzo delle importazioni relative

Considerando la stessa struttura di cartelle menzionata di seguito, vedremo come importare la stessa utilizzando le importazioni relative.

Nell'importazione relativa, il modulo da importare è relativo alla posizione corrente che è la posizione in cui è presente l'istruzione import.

Sintassi:

Nelle importazioni relative, è necessario aggiungere un punto (.) Prima del nome del modulo durante l'importazione utilizzando da .

Saranno 2 punti (…) prima del nome del modulo se il modulo si trova nel livello superiore rispetto alla posizione corrente.

Facendo riferimento alla figura della struttura delle cartelle menzionata sopra, abbiamo i seguenti moduli con la loro funzione, a cui dobbiamo fare riferimento.

  • In module1.py, c'è una funzione chiamatamyfunc1.
  • In module2.py, c'è una funzione chiamata myfunc2.
  • In module3.py, c'è una funzione chiamata myfunc3.
  • In module4.py, c'è una funzione chiamata myfunc4.

Per lavorare con functionmyfunc1 dovrai importare come segue:

from .module1 import myfunc1

Per lavorare con la funzione myfunc3, dovrai importare come segue:

from .subpkg.module3 import myfunc3

Vantaggi delle importazioni relative

Vantaggi:

  • È facile lavorare con le importazioni relative.
  • Dalla posizione attuale, le importazioni possono essere ridotte rispetto alle importazioni assolute.

Svantaggi delle importazioni relative

Svantaggi:

  • Utilizzando le importazioni relative, è difficile risalire a dove risiede il codice

Sommario:

  • L'importazione in Python ti aiuta a fare riferimento al codice, cioè, funzioni / oggetti scritti in un altro file. Viene anche utilizzato per importare librerie / pacchetti python installati utilizzando pip (gestore di pacchetti python), e quindi è necessario utilizzarli nel codice.
  • La funzionalità di importazione è disponibile in altre lingue come dattiloscritto, JavaScript, java, ruby, ecc.
  • Un modulo è python è il codice scritto all'interno del file, ad esempio (test.py). All'interno del tuo file, puoi definire le tue variabili, funzioni o la tua classe. L'intero file diventa un modulo e può essere importato all'interno di un altro file per fare riferimento al codice.
  • Con la funzionalità del modulo, puoi suddividere il codice in file diversi invece di scrivere tutto all'interno di un file. Successivamente, utilizzando l'importazione, puoi fare riferimento al codice all'interno del file che ti serve.
  • Python ha i suoi moduli integrati e anche le librerie / pacchetti esterni installati utilizzando un gestore di pacchetti python (pip), ad esempio, panda, NumPy, ecc. Sono indicati come moduli.
  • È possibile importare solo una piccola parte del modulo, cioè solo le funzioni richieste e i nomi delle variabili dal modulo invece di importare il codice completo.
  • Puoi anche convertire il nome del modulo in una forma più breve assegnandogli un nome alias. L'alias può essere eseguito utilizzando la parola chiave.
  • Un pacchetto è una directory con tutti i moduli definiti al suo interno. Per fare in modo che un interprete Python lo tratti come un pacchetto, la tua directory dovrebbe avere __init.pyfile. Init.py rende la directory come un pacchetto. Ecco il layout del pacchetto su cui lavoreremo.
  • Durante l'esecuzione, quando python trova il nome del modulo di importazione , l'interprete cerca di individuare il modulo. Cerca il modulo nell'elenco dei moduli incorporati. Successivamente, le directory definite all'interno di sys.path.
  • Per le importazioni assolute, è necessario aggiungere l'intero percorso del modulo direttamente dalla cartella principale del progetto.
  • Nell'importazione relativa, il modulo da importare è relativo alla posizione corrente che è la posizione in cui è presente l'istruzione import.