Importuj moduł w Python z przykładami

⚡ Inteligentne podsumowanie

Importuj w Python Pozwala jednemu plikowi na ponowne wykorzystanie zmiennych, funkcji i klas zdefiniowanych w innym pliku. Moduł to po prostu plik .py, podczas gdy pakiet grupuje powiązane moduły w katalogu oznaczonym plikiem __init__.py.

  • 🔘 Czym jest moduł: Moduł to pojedynczy plik .py zawierający zmienne, funkcje lub klasy.
  • importuj słowo kluczowe: import ładuje cały moduł; module_name.function_name wywołuje jego członków.
  • Import selektywny: z modułu import name pobierane są tylko te funkcje lub zmienne, których potrzebujesz.
  • 🧪 aliasy: import module as alias skraca długie nazwy; from module import * udostępnia wszystko.
  • 🛠️. Pakiety i ścieżki: __init__.py zamienia folder w pakiet; sys.path zawiera listę lokalizacji wyszukiwania.
  • 🤖 Przepływy pracy AI: Projekty uczenia maszynowego importują NumPy, pandas i PyTorch jako moduły.

Importuj moduł w Python

Poniższe sekcje wyjaśniają moduły, pakiety, różne style importowania oraz sposób działania importów bezwzględnych i względnych. Python.

W czym znajdują się moduły Python?

Moduł to plik z Python Kod. Kod może mieć formę zmiennych, funkcji lub zdefiniowanej klasy. Nazwa pliku staje się nazwą modułu.

Na przykład, jeśli nazwa pliku to guru99.py, nazwą modułu będzie guru99. Dzięki funkcjom modułu możesz podzielić kod na różne pliki, zamiast zapisywać wszystko w jednym pliku.

Co to jest Python moduł importu?

Plik jest uważany za moduł w PythonAby użyć modułu, należy go zaimportować za pomocą importować Słowo kluczowe. Funkcje lub zmienne obecne w pliku można wykorzystać w innym pliku poprzez zaimportowanie modułu. Ta funkcjonalność jest dostępna w innych językach, takich jak TypeScript, Javascenariusz, Java, Rubin itp.

Jak utworzyć i zaimportować moduł w Python?

Teraz utworzymy moduł i zaimportujemy go do innego pliku.

Oto proces tworzenia i importowania modułu, jak pokazano na zrzucie ekranu:

Utwórz i zaimportuj moduł w Python

Aby utworzyć moduł, wykonaj podane kroki Python.

Struktura folderów używana do testowania kodu jest następująca:

modtest/
	test.py
	display.py	

Krok 1) Utwórz plik i nazwij go test.py

Krok 2) Wewnątrz test.py utwórz funkcję o nazwie display_message()

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

Krok 3) Teraz utwórz kolejny plik display.py.

Krok 4) Wewnątrz display.py zaimportuj plik modułu test.py, jak pokazano poniżej:

import test

Podczas importowania nie musisz podawać pliku test.py, a jedynie nazwę pliku.

Krok 5) Następnie możesz wywołać funkcję display_message() z pliku test.py w pliku display.py. Musisz użyć module_name.function_name.

Na przykład test.display_message().

Import test
print(test.display_message())

Krok 6) Po uruchomieniu display.py otrzymasz następujący komunikat Wyjście:

Welcome to Guru99 Tutorials!

Importowanie klasy w Python

Wcześniej widzieliśmy prosty moduł z funkcją. Teraz utworzymy klasę i odwołamy się do niej w innym pliku.

Struktura folderów służąca do testowania kodu jest następująca:

myproj/
	Car.py
	display.py

Utwórz plik o nazwie Car.py, używając następującego kodu:

Nazwa pliku: 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) 

W pliku Car.py znajdują się atrybuty brand_name, model i manu_year. Funkcje zdefiniowane w tej klasie to car_details(), get_Car_brand(), get_Car_model().

Użyjmy teraz pliku Car.py jako modułu w innym pliku o nazwie display.py.

Nazwa pliku: 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())

Wyjście:

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

Dzięki temu możemy uzyskać dostęp do wszystkich zmiennych i funkcji z Car.py używając modułu Car.

Użycie modułu from do importu

Możesz zaimportować tylko małą część modułu, tzn. tylko wymagane funkcje i nazwy zmiennych z modułu, zamiast importować cały kod.

Jeśli chcesz zaimportować tylko określone elementy, możesz skorzystać ze słowa kluczowego „from”, aby zaimportować to, co chcesz.

Taka jest składnia

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

Struktura folderów używana do testowania kodu jest następująca:

modtest/
	test.py
	display.py	

W pliku test.py znajdują się 2 funkcje, jak pokazano:

Nazwa pliku: test.py

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

Teraz potrzebujesz funkcji display_message(). Dostęp do importowanej funkcji lub zmiennej jest możliwy bezpośrednio, jak pokazano poniżej:

Nazwa pliku: display.py

from test import display_message
print(display_message())

Wyjście:

Welcome to Guru99 Tutorials!

Jeśli teraz użyjesz funkcji display_message1(), zostanie wyświetlony błąd informujący, że funkcja nie jest zdefiniowana w sposób pokazany poniżej:

from test import display_message
print(display_message1())

Wyjście:

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

Importowanie wszystkiego z modułu

Import umożliwia zaimportowanie całego modułu za pomocą polecenia import po którym następuje nazwa modułu, tj. nazwa pliku lub biblioteki, która ma zostać użyta.

Składnia:

Import module

Lub używając

from module import *

Struktura folderów używana do testowania kodu jest następująca:

modtest/
	test.py
	display.py	

Poniżej znajdują się szczegóły kodu wewnątrz pliku test.py

my_name = "Guru99"
my_address = "Mumbai"

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

Korzystanie z modułu importu

Używając jedynie nazwy modułu importu, aby odwołać się do zmiennych i funkcji wewnątrz modułu, należy poprzedzić je nazwą modułu.

Przykład

Nazwa pliku: display.py

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

Nazwa modułu test służy do odwoływania się do funkcji i zmiennych wewnątrz modułu test.

Wyjście:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

Korzystanie z importu *

Zobaczmy przykład użycia import *, Za pomocą import *, funkcje i zmienne są bezpośrednio dostępne, jak pokazano w poniższym przykładzie:

from test import *

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

Wyjście:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

Funkcja dir().

Funkcja dir() jest wbudowaną funkcją w Python. Funkcja dir() zwraca wszystkie właściwości i metody, w tym wbudowane właściwości danego obiektu.

Kiedy więc polecenie dir() zostanie użyte w module, zwrócone zostaną zmienne i funkcje, które znajdują się w module.

Oto działający przykład dir() w module. Mamy klasę o nazwie Car.py, zaimportujmy Car i przypiszmy ją do dir(), aby zobaczyć wynik.

Struktura folderów do testowania kodu będzie następująca:

test prop/
	Car.py
	test.py	

Nazwa pliku: 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) 

Nazwa pliku: test.py

import Car

class_contents = dir(Car)
print(class_contents)

Dane wyjściowe dają nam nazwę klasy i wszystkie funkcje zdefiniowane w Car.py.

Możesz także spróbować użyć dir() na wbudowanym module dostępnym w PythonSpróbujmy tego samego na json moduł, jak pokazano w poniższym przykładzie. Wyświetli on wszystkie dostępne właściwości i metody w module. json moduł.

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

Wyjście:

['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']

Pakiety

Pakiet to katalog zawierający wszystkie zdefiniowane w nim moduły. Aby zrobić Python Aby interpreter traktował go jako pakiet, katalog powinien zawierać plik __init__.py. Plik __init__.py sprawia, że ​​katalog staje się pakietem. Oto układ pakietu, nad którym będziemy pracować.

Pakiety w Python

Nazwa pakietu to moja paczkaAby rozpocząć pracę z pakietem, utwórz katalog o nazwie mypackage/. W tym katalogu utwórz pusty plik o nazwie __init__.py. Utwórz 3 kolejne pliki: module1.py, module2.py i module3.py i zdefiniuj funkcje, jak pokazano na zrzucie ekranu. Poniżej znajdują się szczegóły dotyczące plików module1.py, module2.py i module3.py.

moduł1.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")

moduł2.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")

moduł3.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")

pakiet jest gotowy do użycia. Teraz wywołaj pakiet w dowolnym pliku, jak pokazano poniżej w pliku test.py:

W tym przypadku plik mypackage.module1 jest importowany i otrzymuje nazwę aliasu jako tryb1Podobnie możesz użyć innych modułów module2.py i module3.py z mypackage.

import mypackage.module1 as mod1

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

Wyjście:

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

Właśnie zaprezentowaliśmy pakiet z prostym modułem zawierającym funkcje. W zależności od projektu możesz również tworzyć pakiety z podpakietami, czyli podfolderami zawierającymi moduły ze zdefiniowanymi klasami.

Python Ścieżka wyszukiwania modułu

Podczas wykonywania, gdy Python natknie się nazwa modułu importuInterpreter próbuje zlokalizować moduł. Przeszukuje on wbudowaną listę modułów, a następnie wszystkie katalogi zdefiniowane w sys.path.

Podsumowując, interpreter wykonuje następujące wyszukiwanie w celu zlokalizowania modułu:

  1. W bieżącym katalogu.
  2. Na liście wbudowanych modułów.
  3. Wewnątrz katalogów sys.path.

Szczegóły sys.path można uzyskać, importując moduł sys i wyświetlając sys.path. Wyświetli się lista katalogów, jak pokazano poniżej:

importsys
print(sys.path)

Wyjście:

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

Możesz także zmodyfikować ścieżkę i zachować katalogi zgodnie ze swoimi wymaganiami.

Używanie aliasu modułu w imporcie

Możesz również skrócić nazwę modułu, nadając jej nazwę aliasu. Alias ​​można utworzyć za pomocą as słowo kluczowe.

Składnia:

import filename as alias name

Struktura folderów do testowania kodu będzie następująca:

Mod test/
	test.py
	display.py	

Poniżej znajduje się kod wewnątrz pliku test.py

my_name = "Guru99"
my_address = "Mumbai"

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

Teraz użyjemy aliasu dla pliku test.py w pliku display.py

Import test as t

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

Alias ​​użyty dla modułu testowego to t. Zatem do funkcji i zmiennych z pliku test.py można odwoływać się za pomocą aliasu t.

Wyjście:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

Bezwzględny i względny import w Python

Teraz wiesz, jak zaimportować plik jako moduł w innym pliku. Zobaczmy teraz, jak zarządzać plikami dostępnymi w folderach. Pliki w folderach można importować przy użyciu importu bezwzględnego lub względnego.

Rozważmy, że masz strukturę folderów projektu, jak pokazano poniżej:

Bezwzględny i względny import w Python

Folder główny to myproject/. Zawiera dwa podfoldery: package1 i package2.

Folder package1 zawiera dwa moduły: module1.py i module2.py.

Folder package2 zawiera jedną klasę myclass.py, podpakiet podpakietu z modułem3.py i ostatni moduł4.py.

  • W module1.py znajduje się funkcja o nazwie myfunc1.
  • W module2.py znajduje się funkcja o nazwie myfunc2.
  • W module3.py znajduje się funkcja o nazwie myfunc3.
  • W module4.py znajduje się funkcja o nazwie myfunc4.

Korzystanie z importu bezwzględnego

W przypadku importów bezwzględnych należy dodać całą ścieżkę dostępu do modułu bezpośrednio z folderu głównego projektu.

Zobaczmy teraz, jak wykorzystać importy absolutne do odwoływania się do funkcji obecnych w każdym z modułów.

Aby pracować z funkcją myfunc1, należy ją zaimportować w następujący sposób:

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

Aby pracować z funkcją myfunc3, należy ją zaimportować w następujący sposób:

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

Zalety i wady stosowania importu bezwzględnego

Oto zalety stosowania importu bezwzględnego:

  • Staje się to łatwe tracZwróć moduły w celu sprawdzenia kodu.
  • Łatwy w użyciu i bardzo prosty.
  • Jeśli projekt zostanie przeniesiony na inną ścieżkę, importy pozostaną takie same.

Wady stosowania importu bezwzględnego

Oto wady stosowania importów absolutnych:

  • Ścieżka importu może być bardzo długa, jeśli moduły są zagnieżdżone i ich nazwy są długie.

Korzystanie z importu względnego

Biorąc pod uwagę tę samą strukturę folderów, o której wspomniano powyżej, zobaczymy, jak ją zaimportować za pomocą importów względnych.

W przypadku importu względnego moduł, który ma zostać zaimportowany, jest określany względem bieżącej lokalizacji, czyli lokalizacji, w której znajduje się polecenie importu.

Składnia

W przypadku importu względnego należy dodać kropkę (.) przed nazwą modułu podczas importu za pomocą od.

Jeśli moduł znajduje się o jeden poziom wyżej od bieżącej lokalizacji, przed jego nazwą będą znajdować się dwie kropki (..).

Odnosząc się do powyższego rysunku struktury folderów, mamy następujące moduły wraz z ich funkcjami, do których musimy się odwołać.

  • W module1.py znajduje się funkcja o nazwie myfunc1.
  • W module2.py znajduje się funkcja o nazwie myfunc2.
  • W module3.py znajduje się funkcja o nazwie myfunc3.
  • W module4.py znajduje się funkcja o nazwie myfunc4.

Aby pracować z funkcją myfunc1, należy ją zaimportować w następujący sposób:

from  .module1  import  myfunc1

Aby pracować z funkcją myfunc3, należy ją zaimportować w następujący sposób:

from  .subpkg.module3  import  myfunc3

Zalety względnego importu

  • Łatwo jest pracować z importem względnym.
  • Z obecnej lokalizacji import może zostać skrócony w stosunku do importu bezwzględnego.

Wady importu względnego

  • Korzystając z importu względnego, trudno jest traci wróć tam, gdzie znajduje się kod.

FAQ

Python Nie można zlokalizować modułu. Sprawdź, czy plik jest poprawnie wpisany, znajduje się w ścieżce sys.path lub w bieżącym folderze, a pakiet jest zainstalowany w aktywnym środowisku wirtualnym. Uruchom polecenie pip install, a następnie wprowadź nazwę pakietu dla modułów innych firm.

Zainstaluj go najpierw za pomocą pypećThe Python Menedżer pakietów, na przykład pip install pandas. Po zainstalowaniu w środowisku, zaimportuj go normalnie za pomocą polecenia import pandas. Wbudowane moduły, takie jak json, nie wymagają instalacji.

Import cykliczny ma miejsce, gdy dwa moduły importują się nawzajem, pozostawiając jeden załadowany tylko częściowo. Można to naprawić, łącząc współdzielony kod, importując wewnątrz funkcji, która go potrzebuje, lub importując cały moduł zamiast konkretnych nazw.

Ten strażnik uruchamia kod tylko wtedy, gdy plik jest wykonywany bezpośrednio, a nie podczas importu. Bez niego każdy import ponownie uruchamiałby instrukcje najwyższego poziomu modułu. Oddziela on funkcje wielokrotnego użytku od kodu testowego w stylu skryptu.

Nie. Python Wykonuje moduł jednokrotnie, a następnie buforuje go w sys.modules i ponownie wykorzystuje ten obiekt do późniejszych importów. Aby wymusić przeładowanie podczas tworzenia, wywołaj importlib.reload(module).

Użyj importlib.import_module(“name”), gdy nazwa modułu jest znana tylko podczas działania, na przykład podczas ładowania wtyczek. Zwraca ona obiekt modułu, dzięki czemu można uzyskać dostęp do jego funkcji jak przy normalnym imporcie.

Kod uczenia maszynowego importuje NumPy, pandas, scikit-learn, TensorFlow i PyTorch jako moduły. Zespoły dzielą również własne potoki na moduły i pakiety wielokrotnego użytku, a następnie importują współdzielone funkcje wstępnego przetwarzania i trenowania w różnych skryptach.

Tak. GitHub Copilot i asystenci agenta sugerują linie importu podczas wpisywania, dodają brakujące importy i pomagają rozwiązywać błędy importu. Zawsze upewnij się, że moduł jest zainstalowany, a nazwa jest zgodna z Twoim środowiskiem, zanim zaufasz sugestii.

Podsumuj ten post następująco: