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:
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.
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:
- Ve vašem aktuálním adresáři.
- V seznamu vestavěných modulů
- 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:
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.