Pythonové moduly: Naučte se vytvářet a importovat vlastní a vestavěné moduly

V tomto článku se naučíte vytvářet a importovat vlastní moduly v Pythonu. Také najdete různé techniky pro import a použití vlastních a vestavěných modulů v Pythonu.

Video: Moduly Python

Co jsou moduly v Pythonu?

Moduly odkazují na soubor obsahující příkazy a definice Pythonu.

Soubor obsahující kód Pythonu, například:, example.pyse nazývá modul a jeho název modulu by byl example.

Moduly používáme k rozdělení velkých programů na malé spravovatelné a organizované soubory. Moduly dále poskytují opětovnou použitelnost kódu.

Můžeme definovat naše nejpoužívanější funkce v modulu a importovat je namísto kopírování jejich definic do různých programů.

Vytvořme modul. Zadejte následující text a uložte jej jako example.py.

 # Python Module example def add(a, b): """This program adds two numbers and return the result""" result = a + b return result

Zde jsme definovali funkci add()uvnitř modulu s názvem example. Funkce vezme dvě čísla a vrátí jejich součet.

Jak importovat moduly v Pythonu?

Můžeme importovat definice uvnitř modulu do jiného modulu nebo do interaktivního tlumočníka v Pythonu.

K tomu používáme importklíčové slovo. Chcete-li importovat náš dříve definovaný modul example, zadejte do příkazového řádku Pythonu následující.

 >>> import example

Tím se neimportují názvy funkcí definovaných examplepřímo v aktuální tabulce symbolů. Importuje pouze název modulu example.

Pomocí názvu modulu můžeme k funkci přistupovat pomocí tečkového .operátoru. Například:

 >>> example.add(4,5.5) 9.5

Python má spoustu standardních modulů. Můžete si prohlédnout úplný seznam standardních modulů Pythonu a jejich případů použití. Tyto soubory jsou v adresáři Lib uvnitř umístění, kde jste nainstalovali Python.

Standardní moduly lze importovat stejným způsobem, jako importujeme naše uživatelem definované moduly.

Existuje několik způsobů, jak importovat moduly. Jsou uvedeny níže …

Výpis importu Pythonu

Můžeme importovat modul pomocí importpříkazu a přistupovat k definicím v něm pomocí operátoru tečky, jak je popsáno výše. Zde je příklad.

 # import statement example # to import standard module math import math print("The value of pi is", math.pi)

Když spustíte program, výstup bude:

 Hodnota pí je 3,141592653589793

Import s přejmenováním

Modul můžeme importovat přejmenováním následujícím způsobem:

 # import module by renaming it import math as m print("The value of pi is", m.pi)

mathModul jsme přejmenovali na m. To nám v některých případech může ušetřit čas při psaní.

Název mathnení v našem oboru rozpoznán. Proto math.pije neplatný a m.pije správnou implementací.

Python z … prohlášení o importu

Můžeme importovat konkrétní názvy z modulu, aniž bychom importovali modul jako celek. Zde je příklad.

 # import only pi from math module from math import pi print("The value of pi is", pi)

Zde jsme importovali pouze piatribut z mathmodulu.

V takových případech nepoužíváme operátor tečky. Můžeme také importovat více atributů následujícím způsobem:

 >>> from math import pi, e >>> pi 3.141592653589793 >>> e 2.718281828459045

Importujte všechna jména

Můžeme importovat všechna jména (definice) z modulu pomocí následující konstrukce:

 # import all names from the standard module math from math import * print("The value of pi is", pi)

Zde jsme importovali všechny definice z matematického modulu. To zahrnuje všechna jména viditelná v našem oboru kromě těch, která začínají podtržítkem (soukromé definice).

Importing everything with the asterisk (*) symbol is not a good programming practice. This can lead to duplicate definitions for an identifier. It also hampers the readability of our code.

Python Module Search Path

While importing a module, Python looks at several places. Interpreter first looks for a built-in module. Then(if built-in module not found), Python looks into a list of directories defined in sys.path. The search is in this order.

  • The current directory.
  • PYTHONPATH (an environment variable with a list of directories).
  • The installation-dependent default directory.
 >>> import sys >>> sys.path ('', 'C:\Python33\Lib\idlelib', 'C:\Windows\system32\python33.zip', 'C:\Python33\DLLs', 'C:\Python33\lib', 'C:\Python33', 'C:\Python33\lib\site-packages')

We can add and modify this list to add our own path.

Reloading a module

The Python interpreter imports a module only once during a session. This makes things more efficient. Here is an example to show how this works.

Suppose we have the following code in a module named my_module.

 # This module shows the effect of # multiple imports and reload print("This code got executed")

Now we see the effect of multiple imports.

 >>> import my_module This code got executed >>> import my_module >>> import my_module

We can see that our code got executed only once. This goes to say that our module was imported only once.

Now if our module changed during the course of the program, we would have to reload it.One way to do this is to restart the interpreter. But this does not help much.

Python provides a more efficient way of doing this. We can use the reload() function inside the imp module to reload a module. We can do it in the following ways:

 >>> import imp >>> import my_module This code got executed >>> import my_module >>> imp.reload(my_module) This code got executed 

The dir() built-in function

Pomocí této dir()funkce můžeme zjistit jména, která jsou definována uvnitř modulu.

Například jsme definovali funkci add()v modulu, examplekterý jsme měli na začátku.

Můžeme použít dirv examplemodulu následujícím způsobem:

 >>> dir(example) ('__builtins__', '__cached__', '__doc__', '__file__', '__initializing__', '__loader__', '__name__', '__package__', 'add')

Zde vidíme seřazený seznam jmen (spolu s add). Všechny ostatní názvy, které začínají podtržítkem, jsou výchozí atributy Pythonu přidružené k modulu (nejsou definované uživatelem).

Například __name__atribut obsahuje název modulu.

 >>> import example >>> example.__name__ 'example'

Všechna jména definovaná v našem aktuálním oboru názvů lze zjistit pomocí dir()funkce bez jakýchkoli argumentů.

 >>> a = 1 >>> b = "hello" >>> import math >>> dir() ('__builtins__', '__doc__', '__name__', 'a', 'b', 'math', 'pyscripter')

Zajímavé články...