Importovat modul do Python s příklady

V čem jsou moduly Python?

Modul je soubor s kódem pythonu. Kód může být ve formě proměnných, funkcí nebo definovaných tříd. Název souboru se stane názvem modulu.

Pokud je například váš název souboru guru99.py, název modulu bude guru99. Díky funkcionalitě modulu můžete rozdělit kód do různých souborů místo toho, abyste vše zapisovali do jednoho souboru.

Co je Python importovat modul?

Soubor je v pythonu považován za modul. Chcete-li modul používat, musíte jej importovat pomocí import klíčové slovo. Funkci nebo proměnné obsažené v souboru lze importováním modulu použít v jiném souboru. Tato funkce je dostupná v jiných jazycích, jako je strojopis, JavaSkript, java, ruby ​​atd.

Jak vytvořit a importovat modul do Python?

Nyní vytvoříme modul a importujeme jej do jiného souboru.

Zde je postup vytvoření a importu modulu, jak je znázorněno na snímku obrazovky:

Vytvořte a importujte modul do Python

Postupujte podle uvedených kroků pro vytvoření modulu v pythonu.

Struktura složek použitá k testování kódu je následující:

modtest/
	test.py
	display.py	

Krok 1) Vytvořte soubor a pojmenujte jej test.py

Krok 2) Uvnitř test.py vytvořte funkci s názvem display_message()

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

Krok 3) Nyní vytvořte další soubor display.py.

Krok 4) Uvnitř display.py importujte soubor moduletest.py, jak je znázorněno níže:

import test

Při importu nemusíte uvádět test.py, ale pouze název souboru.

Krok 5) Pak můžete zavolat funkci display_message() z test.py uvnitř display.py, musíte použít modul_name.function_name.

Například test.display_message().

Import test
print(test.display_message())

Krok 6) Když spustíte display.py, získáte následující Výstup:

Welcome to Guru99 Tutorials!

Import třídy do Python

Již dříve jsme viděli jednoduchý modul s funkcí. Zde vytvoří třídu a odkáže třídu do jiného souboru.

Struktura složek pro testování kódu je následující:

myproj/
	Car.py
	display.py

Vytvořte soubor s názvem Car.py s následujícím kódem:

Název souboru: 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) 

V souboru Car.py jsou atributy brand_name, model a manu_year. Funkce definované uvnitř třídy jsou car_details(), get_Car_brand(), get_Car_model().

Použijme nyní soubor Car.py jako modul v jiném souboru s názvem display.py.

Název souboru: 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())

Výstup:

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

Takže můžeme přistupovat ke všem proměnným a funkcím z Car.py pomocí modulu Car.

Pomocí modulu importu od do

Můžete importovat pouze malou část modulu, tj. pouze požadované funkce a názvy proměnných z modulu namísto importu celého kódu.

Pokud chcete importovat pouze konkrétní věci, můžete k importu toho, co chcete, použít klíčové slovo „z“.

Takže syntaxe je

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

Struktura složek použitá k testování kódu je následující:

modtest/
	test.py
	display.py	

V test.py jsou 2 funkce, jak je uvedeno:

Název souboru: test.py

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

Nyní chcete funkci display_message(). K funkci nebo proměnné, kterou importujete, lze přímo přistupovat, jak je uvedeno níže:

Název souboru: display.py

from test import display_message
print(display_message())

Výstup:

Welcome to Guru99 Tutorials!

Nyní, pokud náhodou použijete funkci display_message1() , vyvolá chybu, že funkce není definována, jak je uvedeno níže:

from test import display_message
print(display_message1())

Výstup:

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

Import všeho z modulu

Import umožňuje importovat celý modul pomocí importu následovaného názvem modulu, tj. názvem souboru nebo knihovnou, která se má použít.

Syntaxe:

Import module

Nebo pomocí

from module import *

Struktura složek použitá k testování kódu je následující:

modtest/
	test.py
	display.py	

Níže jsou uvedeny podrobnosti kódu uvnitř test.py

my_name = "Guru99"
my_address = "Mumbai"

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

Pomocí importovacího modulu

Chcete-li odkazovat na proměnné a funkce uvnitř modulu, stačí importovat název modulu a musí mít předponu s názvem modulu.

Příklad

Název souboru: display.py

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

Test názvu modulu se používá k odkazování na funkci a proměnné uvnitř testu modulu.

Výstup:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

Pomocí importu *

Podívejme se na příklad použití import *, Použitím import *, funkce a proměnné jsou přímo přístupné, jak ukazuje příklad níže:

from test import *

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

Výstup:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

Funkce dir().

Dir() je vestavěná funkce v pythonu. Dir() vrací všechny vlastnosti a metody, včetně vestavěných vlastností daného objektu.

Takže když je dir() použito na modulu, dá vám proměnné, funkce, které jsou přítomné uvnitř modulu.

Zde je funkční příklad dir() na modulu. Máme třídu Car.py, dovolte nám importovat Car a přiřadit dir(), abychom viděli výstup.

Struktura složek pro testování kódu bude následující:

test prop/
	Car.py
	test.py	

Název souboru: 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ázev souboru: test.py

import Car

class_contents = dir(Car)
print(class_contents)

Výstup nám dává název třídy a všech funkcí definovaných v Car.py.

Můžete také zkusit použít dir() na vestavěném modulu dostupném v Python. Zkusme to samé json modulu, jak je znázorněno na příkladu níže. Zobrazí všechny vlastnosti a metody dostupné v json modul.

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

Výstup:

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

Balíčky

Balíček je adresář se všemi moduly definovanými uvnitř. Chcete-li udělat a Python interpret s ním zachází jako s balíkem, váš adresář by měl mít soubor init.pyfile. Init.py vytvoří adresář jako balíček. Zde je rozložení balíčku, na kterém budeme pracovat.

Balíčky v Python

Název balíčku je můj balíček. Chcete-li začít pracovat s balíčkem, vytvořte adresář s názvem package/. Uvnitř adresáře vytvořte prázdný soubor s názvem __init__.py. Vytvořte 3 další soubory module1.py, module2.py a module3.py a definujte funkce, jak je znázorněno na snímku obrazovky. Zde jsou podrobnosti o module1.py,module2.py a 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")

Jedno balíčekje připraven k použití. Nyní zavolejte balíček uvnitř libovolného souboru, jak je uvedeno níže: test.py:

Zde je importován soubor mypackage.module1 a je mu přidělen alias jako mod1. Podobně můžete použít další moduly module2.py a module3.py z mého balíčku.

import mypackage.module1 as mod1

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

Výstup:

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

Právě jsme předvedli balíček s jednoduchým modulem s funkcemi uvnitř. Podle vašeho projektu můžete také zabalit s dílčími balíčky. Podsložky/ s moduly s definovanými třídami.

Python Cesta hledání modulu

Během provádění, když narazí python název modulu importu, interpret se pokusí najít modul. Vyhledá modul v seznamu vestavěných modulů. Later ve všech, adresáře definované uvnitř sys.path.

Abych to shrnul, tlumočník provede následující hledání, aby našel modul:

  1. Ve vašem aktuálním adresáři.
  2. V seznamu vestavěných modulů
  3. Uvnitř adresářů sys.path

Podrobnosti o sys.path můžete získat importem modulu sys a vytištěním sys.path. Zobrazí se vám seznam adresářů, jak je uvedeno níže:

importsys
print(sys.path)

Výstup:

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

Můžete také upravit cestu a ponechat adresáře podle vašich požadavků.

Použití aliasu modulu při importu

Název modulu můžete také převést na kratší formu zadáním aliasu. Alias ​​lze provést pomocí klíčového slova.

Syntaxe:

import filename as alias name

Struktura složek pro testování kódu bude následující:

Mod test/
	test.py
	display.py	

Následuje kód uvnitř test.py

my_name = "Guru99"
my_address = "Mumbai"

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

Nyní bude v display.py používat alias pro test.py

Import test as t

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

Alias ​​používaný pro testovací modul je t . Takže funkci a proměnné z test.py lze odkazovat pomocí aliasu t.

Výstup:

Welcome to Guru99 Tutorials!
All about Python!
Guru99
Mumbai

Absolutní a relativní importy v Python

Nyní víte, jak importovat soubor jako modul do jiného souboru. Podívejme se nyní, jak spravovat soubory dostupné ve složkách. Soubory ve složkách lze importovat pomocí absolutních nebo relativních importů.

Zvažte, že máte strukturu složek projektu, jak je znázorněno níže:

Absolutní a relativní importy v Python

Kořenová složka je můj projekt/. Má dvě podsložky package1 a package2.

Složka package1 má dva moduly, module1.py a module2.py.

Složka package2 má jednu třídu myclass.py, dílčí balíček subpkg s module3.py a poslední module4.py.

  • V module1.py je funkce s názvemmyfunc1.
  • V module2.py je funkcenazvanámyfunc2.
  • V module3.py je funkcenazvanámyfunc3.
  • V module4.py je funkcenazvanámyfunc4.

Použití absolutních importů

Pro absolutní importy musíte přidat celou cestu vašeho modulu přímo z kořenové složky projektu.

Podívejme se nyní, jak využít absolutní importy k odkazování na funkce přítomné v každém z modulu.

Chcete-li pracovat s funkcí functionmyfunc1, budete muset importovat následovně:

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

Pro práci s funkcí myfunc3 budete muset importovat následovně:

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

Výhody a nevýhody použití absolutních importů

Zde jsou výhody použití absolutních importů:

  • Je snadné zpětně dohledat moduly pro kontrolu kódu.
  • Snadné použití a velmi přímočaré.
  • Pokud se projekt přesune na jinou cestu, importy zůstanou stejné.

Nevýhody použití absolutních importů

Zde jsou nevýhody použití absolutních importů:

Nevýhody:

  • Cesta importu může být v případě velmi dlouhá, moduly jsou vnořené a pokud je název modulů dlouhý.

Použití relativních importů

S ohledem na stejnou strukturu složek uvedenou níže uvidíme, jak ji importovat pomocí relativních importů.

Při relativním importu je modul, který se má importovat, relativní k aktuálnímu umístění, což je umístění, kde se nachází příkaz importu.

Syntax

V relativních importech musíte při importu pomocí přidat tečku (.) před název modulu od.

Pokud je modul o jednu úroveň výše od aktuálního umístění, budou před názvem modulu 2 tečky (..).

S odkazem na výše uvedený obrázek struktury složek máme následující moduly s jejich funkcí, na které se musíme odkázat.

  • V module1.py je funkce s názvemmyfunc1.
  • V module2.py je funkcenazvanámyfunc2.
  • V module3.py je funkcenazvanámyfunc3.
  • V module4.py je funkcenazvanámyfunc4.

Pro práci s functionmyfunc1 budete muset importovat následovně:

from  .module1  import  myfunc1

Chcete-li pracovat s funkcí myfunc3, budete muset importovat následovně:

from  .subpkg.module3  import  myfunc3

Výhody relativních dovozů

Výhody:

  • Je snadné pracovat s relativními importy.
  • Z aktuálního umístění lze importy zkrátit oproti absolutním importům.

Nevýhody relativního dovozu

Nevýhody:

  • Pomocí relativních importů je obtížné zpětně dohledat, kde se kód nachází

Shrnutí

  • Importovat do Python vám pomůže odkázat na kód, tj. .functions/objects, které jsou zapsány v jiném souboru. Používá se také k importu knihoven/balíčků pythonu, které se instalují pomocí pip (správce balíčků python), a které pak musíte použít ve svém kódu.
  • Funkce importu je k dispozici v jiných jazycích, jako je strojopis, JavaSkript, java, ruby ​​atd.
  • Modul je python je kód napsaný uvnitř souboru, například (test.py). Uvnitř souboru můžete mít definované proměnné, funkce nebo třídu. Celý soubor se stane modulem a lze jej importovat do jiného souboru a odkazovat na kód.
  • Díky funkcionalitě modulu můžete rozdělit kód do různých souborů místo toho, abyste vše zapisovali do jednoho souboru. Later, pomocí importu můžete odkazovat na kód uvnitř souboru, který potřebujete.
  • Python má své vestavěné moduly a také externí knihovny/balíčky nainstalované pomocí a správce balíčků python (pip), např. pandy, NumPy atd. se označují jako moduly.
  • Můžete importovat pouze malou část modulu, tj. pouze požadované funkce a názvy proměnných z modulu namísto importu celého kódu.
  • Název modulu můžete také převést na kratší formu zadáním aliasu. Alias ​​lze provést pomocí klíčového slova.
  • Balíček je adresář se všemi moduly definovanými uvnitř. Chcete-li udělat a Python interpret s ním zachází jako s balíkem, váš adresář by měl mít soubor __init.pyfile. Init.py vytvoří adresář jako balíček. Zde je rozložení balíčku, na kterém budeme pracovat.
  • Během provádění, když narazí python název modulu importu, interpret se pokusí najít modul. Vyhledá modul v seznamu vestavěných modulů. Later ve všech, adresáře definované uvnitř sys.path.
  • Pro absolutní importy musíte přidat celou cestu vašeho modulu přímo z kořenové složky projektu.
  • Při relativním importu je modul, který se má importovat, relativní k aktuálnímu umístění, což je umístění, kde se nachází příkaz importu.