Importă modul în Python cu Exemple

⚡ Rezumat inteligent

Import în Python permite unui fișier să reutilizeze variabilele, funcțiile și clasele definite în altul. Un modul este pur și simplu un fișier .py, în timp ce un pachet grupează modulele corelate într-un director marcat de un fișier __init__.py.

  • 🔘 Ce este un modul: Un modul este un singur fișier .py care conține variabile, funcții sau clase.
  • ☑️ cuvânt cheie de import: import încarcă un modul întreg; module_name.function_name apelează membrii acestuia.
  • Import selectiv: `from module import name` extrage doar funcțiile sau variabilele de care aveți nevoie.
  • 🧪 Aliasuri: `import module as alias` scurtează numele lungi; `from module import *` expune totul.
  • 🛠️ Pachete și căi: `__init__.py` transformă un folder într-un pachet; `sys.path` listează locațiile de căutare.
  • 🤖 Fluxuri de lucru bazate pe inteligența artificială: Proiectele de învățare automată importă NumPy, pandas și PyTorch ca module.

Importă modul în Python

Secțiunile de mai jos explică modulele, pachetele, diferitele stiluri de import și cum funcționează importurile absolute și relative în Python.

În ce sunt modulele Python?

Un modul este un fișier cu Python cod. Codul poate fi sub formă de variabile, funcții sau o clasă definită. Numele fișierului devine numele modulului.

De exemplu, dacă numele fișierului dvs. este guru99.py, numele modulului va fi guru99. Cu funcționalitatea modulului, vă puteți împărți codul în fișiere diferite în loc să scrieți totul într-un singur fișier.

Care este Python import modul?

Un fișier este considerat un modul în PythonPentru a utiliza modulul, trebuie să îl importați folosind import cuvânt cheie. Funcțiile sau variabilele prezente în fișier pot fi utilizate într-un alt fișier prin importul modulului. Această funcționalitate este disponibilă și în alte limbaje de programare, cum ar fi TypeScript, Javascenariu, Java, Ruby etc.

Cum să creați și să importați un modul în Python?

Acum vom crea un modul și îl vom importa într-un alt fișier.

Iată fluxul de creare și importare a modulului, așa cum se arată în captură de ecran:

Creați și importați un modul în Python

Urmați pașii dați pentru a crea un modul în Python.

Structura folderului folosită pentru a testa codul este următoarea:

modtest/
	test.py
	display.py	

Pas 1) Creați un fișier și denumiți-l test.py

Pas 2) În interiorul test.py creați o funcție numită display_message()

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

Pas 3) Acum creați un alt fișier display.py.

Pas 4) În interiorul fișierului display.py importați fișierul modulului test.py, așa cum se arată mai jos:

import test

În timpul importului, nu trebuie să menționați fișierul test.py, ci doar numele fișierului.

Pas 5) Apoi poți apela funcția display_message() din test.py în interiorul display.py. Trebuie să folosești module_name.function_name.

De exemplu test.display_message().

Import test
print(test.display_message())

Pas 6) Când executați display.py, veți obține următoarele ieșire:

Welcome to Guru99 Tutorials!

Importul unei clase în Python

Anterior, am văzut un modul simplu cu o funcție. Aici vom crea o clasă și vom face referire la clasă în interiorul unui alt fișier.

Structura de foldere pentru testarea codului este următoarea:

myproj/
	Car.py
	display.py

Creați un fișier numit Car.py cu următorul cod:

Nume fișier: Car.py

class Car:
	brand_name = "BMW"
	model = "Z4"
	manu_year = "2020"

	def __init__(self, brand_name, model, manu_year):
		self.brand_name = brand_name
		self.model = model
		self.manu_year = manu_year

	def 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) 

În fișierul Car.py, există atributele brand_name, model și manu_year. Funcțiile definite în cadrul clasei sunt car_details(), get_Car_brand(), get_Car_model().

Să folosim acum fișierul Car.py ca modul într-un alt fișier numit display.py.

Nume fișier: display.py

import Car
car_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())

ieșire:

BMW
Car brand is  BMW
Car model is  Z5
Car manufacture year is  2020
Car brand is  BMW
Car model is  Z5

Deci putem accesa toate variabilele și funcțiile din Car.py folosind modulul Car.

Utilizarea de la pentru a importa modulul

Puteți importa doar o mică parte a modulului, adică doar funcțiile și numele variabilelor necesare din modul, în loc să importați întregul cod.

Când doriți să fie importate doar anumite lucruri, puteți utiliza cuvântul cheie „from” pentru a importa ceea ce doriți.

Deci sintaxa este

from  module import your function_name , variables,... etc.

Structura folderului folosită pentru a testa codul este următoarea:

modtest/
	test.py
	display.py	

În test.py există 2 funcții, așa cum se arată:

Nume fișier: test.py

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

Acum doriți funcția display_message(). Funcția sau variabila pe care o importați poate fi accesată direct, așa cum se arată mai jos:

Nume fișier: display.py

from test import display_message
print(display_message())

ieșire:

Welcome to Guru99 Tutorials!

Acum, dacă se întâmplă să utilizați funcția display_message1(), aceasta va genera o eroare care indică faptul că funcția nu este definită așa cum se arată mai jos:

from test import display_message
print(display_message1())

ieșire:

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

Se importă totul din modul

Importul vă permite să importați întregul modul utilizând comanda „import” urmată de numele modulului, adică numele fișierului sau al bibliotecii care va fi utilizată.

Sintaxă:

Import module

Sau prin utilizarea

from module import *

Structura folderului folosită pentru a testa codul este următoarea:

modtest/
	test.py
	display.py	

Mai jos sunt detaliile codului din interiorul test.py

my_name = "Guru99"
my_address = "Mumbai"

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

Folosind modulul de import

Folosind doar numele modulului de import, pentru a face referire la variabilele și funcțiile din interiorul modulului, trebuie să le prefixați cu numele modulului.

Exemplu

Nume fișier: display.py

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

Numele modulului test este folosit pentru a face referire la funcțiile și variabilele din interiorul modulului test.

ieșire:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

Folosind import *

Să vedem un exemplu de utilizare import *. Utilizarea import *, funcțiile și variabilele sunt direct accesibile, așa cum se arată în exemplul de mai jos:

from test import *

print(display_message())
print(display_message1())
print(my_name)
print(my_address)

ieșire:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

Funcția dir( ).

Funcția dir() este o funcție încorporată în PythonFuncția dir() returnează toate proprietățile și metodele, inclusiv proprietățile predefinite ale obiectului dat.

Deci, atunci când dir() este utilizată pe modul, aceasta vă va oferi variabilele și funcțiile prezente în interiorul modulului.

Iată un exemplu funcțional de dir() pe un modul. Avem o clasă numită Car.py, permiteți-ne să importăm Car și să o atribuim funcției dir() pentru a vedea rezultatul.

Structura folderului pentru a testa codul va fi următoarea:

test prop/
	Car.py
	test.py	

Nume fișier: Car.py

class Car:
	brand_name = "BMW"
	model = "Z4"
	manu_year = "2020"

	def __init__(self, brand_name, model, manu_year):
		self.brand_name = brand_name
		self.model = model
		self.manu_year = manu_year

	def 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) 

Nume fișier: test.py

import Car

class_contents = dir(Car)
print(class_contents)

Ieșirea ne oferă numele clasei și toate funcțiile definite în Car.py.

De asemenea, puteți încerca să utilizați dir() pe un modul încorporat disponibil în PythonSă încercăm același lucru și pe JSON modulul așa cum se arată în exemplul de mai jos. Acesta va afișa toate proprietățile și metodele disponibile în JSON modul.

Import json
json_details = dir(json)
print(json_details)

ieșire:

['JSONDecodeError', 'JSONDecoder', 'JSONEncoder', '__all__', '__author__', '__bu
iltins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__pac
kage__', '__path__', '__spec__', '__version__', '_default_decoder', '_default_en
coder', 'codecs', 'decoder', 'detect_encoding', 'dump', 'dumps', 'encoder', 'loa
d', 'loads', 'scanner']

Pachete

Un pachet este un director cu toate modulele definite în el. A face o Python Interpretorul îl tratează ca pe un pachet, directorul dumneavoastră ar trebui să conțină fișierul __init__.py. Fișierul __init__.py transformă directorul într-un pachet. Iată aspectul pachetului la care vom lucra.

Pachete în Python

Numele pachetului este pachetul meuPentru a începe să lucrați cu pachetul, creați un director numit mypackage/. În interiorul directorului, creați un fișier gol numit __init__.py. Creați încă 3 fișiere module1.py, module2.py și module3.py și definiți funcțiile așa cum se arată în captura de ecran. Iată detaliile pentru module1.py, module2.py și 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")

pachet este gata de utilizare. Acum apelați pachetul din oricare dintre fișierele dvs., așa cum se arată mai jos în test.py:

Aici, mypackage.module1 este importat și i se primește un nume de alias ca mod1În mod similar, puteți utiliza celelalte module module2.py și module3.py din mypackage.

import mypackage.module1 as mod1

print(mod1.mod1_func1())
print(mod1.mod1_func2())
print(mod1.mod1_func2())

ieșire:

Welcome to Module1 function1
None
Welcome to Module1 function2
None
Welcome to Module1 function2
None

Tocmai am demonstrat pachetul cu un modul simplu cu funcții în interiorul său. Ca și în proiectul dvs., puteți crea și pachete care au sub-pachete, adică sub-foldere care au module cu clase definite.

Python Calea de căutare a modulului

În timpul execuției, când Python vine peste nume de modul de import, interpretorul încearcă să localizeze modulul. Caută modulul în lista de module încorporată și apoi în toate directoarele definite în sys.path.

Pentru a rezuma, interpretul face următoarea căutare pentru a localiza modulul:

  1. În directorul dvs. curent.
  2. În lista de module încorporate.
  3. În directoarele sys.path.

Puteți obține detaliile fișierului sys.path importând modulul sys și afișând fișierul sys.path. Acesta vă va oferi lista de directoare, așa cum se arată mai jos:

importsys
print(sys.path)

ieșire:

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

De asemenea, puteți modifica calea și păstra directoarele conform cerințelor dvs.

Folosind alias de modul în import

De asemenea, puteți converti numele modulului într-o formă mai scurtă, dându-i un nume alias. Aliasul poate fi creat folosind as cuvinte cheie.

Sintaxă:

import filename as alias name

Structura folderului pentru a testa codul va fi următoarea:

Mod test/
	test.py
	display.py	

Urmează codul din interiorul test.py

my_name = "Guru99"
my_address = "Mumbai"

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

Acum vom folosi un alias pentru test.py în display.py

Import test as t

print(t.display_message())
print(t.display_message1())
print(t.my_name)
print(t.my_address)

Aliasul utilizat pentru modulul de test este t. Deci, funcțiile și variabilele din test.py pot fi accesate folosind aliasul t.

ieșire:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

Importurile absolute și relative în Python

Acum știți cum să importați un fișier ca modul în interiorul altui fișier. Să vedem acum cum să gestionăm fișierele disponibile în foldere. Fișierele din foldere pot fi importate fie utilizând importuri absolute, fie relative.

Luați în considerare că aveți structura folderului de proiect, așa cum se arată mai jos:

Importurile absolute și relative în Python

Folderul rădăcină este myproject/. Are două subfoldere, package1 și package2.

Dosarul package1 are două module, module1.py și module2.py.

Dosarul package2 are o clasă myclass.py, un sub-pachet subpkg cu module3.py și ultimul module4.py.

  • În module1.py, există o funcție numită myfunc1.
  • În module2.py, există o funcție numită myfunc2.
  • În module3.py, există o funcție numită myfunc3.
  • În module4.py, există o funcție numită myfunc4.

Utilizarea importurilor absolute

Pentru importuri absolute, trebuie să adăugați întreaga cale a modulului direct din folderul rădăcină al proiectului.

Să vedem acum cum putem utiliza importurile absolute pentru a face referire la funcțiile prezente în fiecare dintre module.

Pentru a lucra cu funcția myfunc1, va trebui să o importați după cum urmează:

from package1.module1  import  myfunc1
or
from package1 import module1
module1.myfunc1()  

Pentru a lucra cu funcția myfunc3, va trebui să o importați după cum urmează:

from package1.subpkg.module3  import  myfunc3
or
from package1.subpkg import module3
module3.myfunc3()  

Avantajele și dezavantajele utilizării importurilor absolute

Iată avantajele utilizării importurilor absolute:

  • Devine ușor să tracRetrageți modulele pentru verificarea codului.
  • Usor de folosit si foarte simplu.
  • Dacă proiectul este mutat pe o altă cale, importurile vor rămâne aceleași.

Dezavantajele utilizării importurilor absolute

Iată dezavantajele utilizării importurilor absolute:

  • Calea de import poate deveni foarte lungă în cazul în care modulele sunt imbricate și numele modulelor sunt lungi.

Utilizarea importurilor relative

Având în vedere aceeași structură de foldere menționată mai sus, vom vedea cum să o importăm folosind importuri relative.

Într-un import relativ, modulul care urmează să fie importat este relativ față de locația curentă, adică locația în care este prezentă instrucțiunea de import.

Sintaxă

În importurile relative, trebuie să adăugați un punct (.) înainte de numele modulului atunci când importați folosind de la.

Vor fi două puncte (..) înaintea numelui modulului dacă modulul este cu un nivel mai sus față de locația curentă.

Referindu-ne la figura cu structura de foldere menționată mai sus, avem următoarele module cu funcțiile lor, la care trebuie să ne referim.

  • În module1.py, există o funcție numită myfunc1.
  • În module2.py, există o funcție numită myfunc2.
  • În module3.py, există o funcție numită myfunc3.
  • În module4.py, există o funcție numită myfunc4.

Pentru a lucra cu funcția myfunc1, va trebui să o importați după cum urmează:

from  .module1  import  myfunc1

Pentru a lucra cu funcția myfunc3, va trebui să o importați după cum urmează:

from  .subpkg.module3  import  myfunc3

Avantajele importurilor relative

  • Este ușor să lucrați cu importuri relative.
  • Din locația actuală, importurile pot fi scurtate în comparație cu importurile absolute.

Dezavantajele importurilor relative

  • Folosind importuri relative, este dificil să tracînapoi acolo unde se află codul.

Întrebări frecvente

Python Nu se poate localiza modulul. Confirmați că fișierul este scris corect, se află pe sys.path sau în folderul curent și că pachetul este instalat în mediul virtual activ. Rulați comanda pip install urmată de numele pachetului pentru modulele terțe.

Instalați-l mai întâi cu țâfnă, Python manager de pachete, de exemplu pip install pandas. După ce este instalat în mediul dvs., importați-l normal cu import pandas. Modulele încorporate, cum ar fi json, nu necesită instalare.

Un import circular are loc atunci când două module se importă reciproc, lăsând unul încărcat doar parțial. Remediați problema prin îmbinarea codului partajat, importând în interiorul funcției care are nevoie de el sau importând întregul modul în loc de nume specifice.

Această protecție execută codul doar atunci când fișierul se execută direct, nu atunci când este importat. Fără ea, fiecare import ar relua instrucțiunile de nivel superior ale modulului. Aceasta păstrează funcțiile reutilizabile separate de codul de testare în stil script.

Nu. Python execută un modul o singură dată, apoi îl stochează în cache în sys.modules și reutilizează obiectul respectiv pentru importuri ulterioare. Pentru a forța o reîncărcare în timpul dezvoltării, apelați importlib.reload(module).

Folosește importlib.import_module(„name”) când numele modulului este cunoscut doar în timpul rulării, cum ar fi încărcarea pluginurilor. Returnează obiectul modulului, astfel încât să poți accesa funcțiile sale ca în cazul unui import normal.

Importă cod de învățare automată NumPy, pandas, scikit-learn, TensorFlow și PyTorch ca module. Echipele își împart propriile canale de lucru în module și pachete reutilizabile, apoi importă funcții partajate de preprocesare și antrenament în scripturi.

Da. GitHub Copilot și asistenții agențic sugerează linii de import pe măsură ce tastați, adaugă importuri lipsă și ajută la rezolvarea erorilor de import. Verificați întotdeauna dacă modulul este instalat și că numele se potrivește cu mediul dvs. înainte de a avea încredere într-o sugestie.

Rezumați această postare cu: