Importujte modul v Pythonu s příklady

Obsah:

Anonim

Jaké jsou moduly v Pythonu?

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

Například pokud je váš název souboru guru99.py, bude název modulu guru99 . Díky funkcím modulu můžete svůj kód rozdělit do různých souborů, místo abyste psali vše do jednoho souboru.

V tomto výukovém programu se naučíte:

  • Jaké jsou moduly v Pythonu?
  • Modul pro import v Pythonu
  • Jak vytvořit a importovat modul v Pythonu?
  • Import třídy v Pythonu
  • Pomocí modulu pro import
  • Import všeho z modulu
  • Pomocí modulu importu
  • Pomocí importu *
  • Funkce dir ()
  • Balíčky
  • PythonModuleSearchPath
  • Použití aliasu modulu při importu
  • Absolutní a relativní import v Pythonu
  • UsingAbsoluteImports
  • UsingRelativeImports

Co je modul importu Pythonu?

Soubor je považován za modul v pythonu. Chcete-li modul použít, musíte jej importovat pomocí klíčového slova import . Funkci nebo proměnné přítomné uvnitř souboru lze použít v jiném souboru importem modulu. Tato funkce je k dispozici v jiných jazycích, jako je strojopis, JavaScript, Java, Ruby atd.

Jak vytvořit a importovat modul v Pythonu?

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

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

Postupujte podle pokynů k vytvoření modulu v pythonu.

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

modtest/test.pydisplay.py

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

Krok 2) Uvnitř test.py vytvořte funkci nazvanou 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 zmínit test.py, ale pouze název souboru.

Krok 5)

Pak můžete zavolat funkci display_message () z test.py uvnitř display.py, musíte využít název_modulu.funkce_název.

Například test.display_message ().

Import testprint(test.display_message())

Krok 6)

Když spustíte display.py, dostanete následující výstup:

Welcome to Guru99 Tutorials!

Import třídy v Pythonu

Dříve jsme viděli jednoduchý modul s funkcí. Zde se vytvoří třída a odkáže se na třídu uvnitř jiného souboru.

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

myproj/Car.pydisplay.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_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)

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 ().

Pojďme nyní použít soubor Car.py jako modul v jiném souboru s názvem display.py.

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

Výstup:

BMWCar brand is BMWCar model is Z5Car manufacture year is 2020Car brand is BMWCar 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 pro import

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

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

Syntaxe tedy 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.pydisplay.py

V test.py jsou 2 funkce, jak je znázorněno:

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 importované funkci nebo proměnné lze přistupovat přímo, jak je znázorněno níže:

Název souboru: display.py

from test import display_messageprint(display_message())

Výstup:

Welcome to Guru99 Tutorials!

Pokud nyní používáte funkci display_message1 (), vyvolá chybu, že funkce není definována, jak je znázorněno níže:

from test import display_messageprint(display_message1())

Výstup:

Traceback (most recent call last):File "display.py", line 3, in 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á má být použita.

Syntax:

Import module

Nebo pomocí

from module import *

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

modtest/test.pydisplay.py

Následují 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í modulu importu

Pouhým pouhým importem názvu modulu, aby bylo možné odkazovat na proměnné a funkce uvnitř modulu, musí předpona s názvem modulu.

Příklad

Název souboru: display.py

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

Test názvu modulu se používá k označení funkce a proměnných uvnitř testu modulu.

Výstup:

Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai

Pomocí importu *

Podívejme se na příklad pomocí importu * . Pomocí importu * jsou funkce a proměnné přímo přístupné, jak ukazuje následující příklad:

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

Výstup:

Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai

Funkce dir ()

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

Když se tedy na modulu použije dir (), dá vám proměnné, funkce, které jsou uvnitř modulu.

Zde je funkční příklad dir () na modulu. Máme třídu nazvanou Car.py, importujme Car a přiřaďte k dir (), abychom viděli výstup.

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

test prop/Car.pytest.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_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)

Název souboru: test.py

import Carclass_contents = dir(Car)print(class_contents)

Výstup nám dává název třídy a všechny funkce definované v Car.py.

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

Import jsonjson_details = dir(json)print(json_details)

Výstup:

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

Balíčky

Balíček je adresář, ve kterém jsou definovány všechny moduly. Aby překladač Pythonu s ním zacházel jako s balíčkem, měl by mít váš adresář soubor init.pyfile. Soubor 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 balíček /. V adresáři vytvořte prázdný soubor s názvem __init__.py. Vytvořte další 3 soubory module1.py, module2.py a module3.py a definujte funkce podle obrázku. Tady 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")

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

Zde se mypackage.module1 importuje a dostane alias název jako mod1. Podobně můžete použít další moduly module2.py a module3.py z mého balíčku.

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

Výstup:

Welcome to Module1 function1NoneWelcome to Module1 function2NoneWelcome to Module1 function2None

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. Podadresáře / mající moduly s definovanými třídami.

Vyhledávací cesta modulu Python

Během provádění, když python narazí na název modulu importu , se interpret pokusí modul lokalizovat. Prohledá modul v seznamu integrovaných modulů. Později ve všech adresářích definovaných uvnitř sys.path.

Abychom to shrnuli, tlumočník provede následující vyhledání modulu:

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

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

importsysprint(sys.path)

Výstup:

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

Můžete také upravit cestu a zachovat adresáře podle svých požadavků.

Použití aliasu modulu při importu

Můžete také převést název modulu na kratší formu tím, že mu dáte alias. Alias ​​lze provést pomocí klíčového slova.

Syntax:

import filename as alias name

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

Mod test/test.pydisplay.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í použije alias pro test.py v display.py

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

Alias, který se používá pro testovací modul, je t. Funkce a proměnné z test.py lze tedy odkazovat pomocí aliasu t.

Výstup:

Welcome to Guru99 Tutorials!All about Python!Guru99Mumbai

Absolutní a relativní import v Pythonu

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ího nebo relativního importu.

Vezměte v úvahu, ž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 zvanámyfunc1.
  • V module2.py je funkce zvanámyfunc2.
  • V module3.py existuje funkce zvanámyfunc3.
  • V module4.py existuje funkce zvanámyfunc4.

Pomocí absolutního importu

U absolutních importů musíte přidat celou cestu k vašemu modulu přímo z kořenové složky projektu.

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

Chcete-li pracovat s funkcí myfunc1, budete muset importovat následujícím způsobem:

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

Pro práci s funkcí myfunc3 budete muset importovat takto:

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

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

Zde jsou výhody používání absolutních dovozů:

  • Je snadné zpětně vysledovat moduly pro kontrolu kódu.
  • Snadné použití a velmi jednoduché.
  • Pokud je projekt přesunut na jinou cestu, importy zůstanou stejné.

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

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

Nevýhody:

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

Použití relativních dovozů

Vzhledem ke stejné struktuře složek uvedené níže uvidíme, jak je importovat pomocí relativních importů.

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

Syntax:

Při relativním importu musíte při importu pomocí z přidat před název modulu tečku (.) .

Bude-li modul v jedné úrovni od aktuálního umístění, budou to 2 období (…) před názvem modulu.

S odkazem na výše uvedenou strukturu složek máme následující moduly s jejich funkcí, na které se musíme odvolat.

  • V module1.py je funkce zvanámyfunc1.
  • V module2.py je funkce zvanámyfunc2.
  • V module3.py existuje funkce zvanámyfunc3.
  • V module4.py existuje funkce zvanámyfunc4.

Pro práci s funkcímyfunc1 budete muset importovat takto:

from .module1 import myfunc1

Chcete-li pracovat s funkcí myfunc3, budete muset importovat následujícím způsobem:

from .subpkg.module3 import myfunc3

Výhody relativního dovozu

Výhody:

  • S relativním importem je snadné pracovat.
  • Ze současného umístění lze dovoz ve srovnání s absolutním dovozem zkrátit.

Nevýhody relativního dovozu

Nevýhody:

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

Souhrn:

  • Import v Pythonu vám pomůže odkazovat na kód, tj. .Funkce / objekty, které jsou zapsány v jiném souboru. Používá se také k importu knihoven / balíčků pythonu, které jsou nainstalovány pomocí pipu (správce balíčků pythonu), a musíte je pak použít ve svém kódu.
  • Funkce importu je k dispozici v jiných jazycích, jako je strojopis, JavaScript, Java, Ruby atd.
  • Modul je python je kód zapsaný uvnitř souboru, například (test.py). Uvnitř souboru můžete mít definované své proměnné, funkce nebo třídu. Celý soubor se stává modulem a lze jej importovat do jiného souboru, aby odkazoval na kód.
  • Díky funkcím modulu můžete svůj kód rozdělit do různých souborů, místo abyste psali vše do jednoho souboru. Později pomocí importu můžete odkázat na kód uvnitř souboru, který potřebujete.
  • Python má své vestavěné moduly a také externí knihovny / balíčky nainstalované pomocí správce balíčků pythonu (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 místo importu celého kódu.
  • Můžete také převést název modulu na kratší formu tím, že mu dáte alias. Alias ​​lze provést pomocí klíčového slova.
  • Balíček je adresář, ve kterém jsou definovány všechny moduly. Aby překladač Pythonu s ním zacházel jako s balíčkem, měl by mít váš adresář soubor __init.pyfile. Soubor init.py vytvoří adresář jako balíček. Zde je rozložení balíčku, na kterém budeme pracovat.
  • Během provádění, když python narazí na název modulu importu , se interpret pokusí modul lokalizovat. Prohledá modul v seznamu integrovaných modulů. Později ve všech adresářích definovaných uvnitř sys.path.
  • U absolutních importů musíte přidat celou cestu k vašemu modulu přímo z kořenové složky projektu.
  • V relativním importu je modul, který se má importovat, relativní k aktuálnímu umístění, což je umístění, kde je příkaz k importu.