V tomto článku sa naučíte vytvárať a importovať vlastné moduly v Pythone. Nájdete tiež rôzne techniky na import a použitie vlastných a zabudovaných modulov v Pythone.
Video: Moduly Python
Čo sú moduly v Pythone?
Moduly odkazujú na súbor obsahujúci príkazy a definície Pythonu.
Súbor obsahujúci kód Pythonu, napríklad:, example.py
sa nazýva modul a jeho názov by bol example
.
Moduly používame na rozdelenie veľkých programov na malé spravovateľné a usporiadané súbory. Moduly ďalej poskytujú opätovnú použiteľnosť kódu.
Môžeme definovať naše najpoužívanejšie funkcie v module a importovať ich, namiesto kopírovania ich definícií do rôznych programov.
Vytvorme modul. Zadajte nasledujúci text a uložte ho ako example.py
.
# Python Module example def add(a, b): """This program adds two numbers and return the result""" result = a + b return result
Tu sme definovali funkciu add()
vo vnútri modulu s názvom example
. Funkcia prijme dve čísla a vráti ich súčet.
Ako importovať moduly v Pythone?
Definície vo vnútri modulu môžeme importovať do iného modulu alebo do interaktívneho tlmočníka v Pythone.
Na to používame import
kľúčové slovo. Ak chcete importovať náš predtým definovaný modul example
, do príkazového riadka Pythonu napíšeme nasledujúci text.
>>> import example
Týmto sa neimportujú názvy funkcií definované example
priamo v aktuálnej tabuľke symbolov. Importuje sa tam iba názov modulu example
.
Pomocou názvu modulu môžeme pristupovať k funkcii pomocou bodkového .
operátora. Napríklad:
>>> example.add(4,5.5) 9.5
Python má veľa štandardných modulov. Môžete si pozrieť úplný zoznam štandardných modulov Pythonu a ich prípady použitia. Tieto súbory sú v adresári Lib vo vnútri umiestnenia, kde ste nainštalovali Python.
Štandardné moduly je možné importovať rovnakým spôsobom, ako importujeme naše užívateľom definované moduly.
Existuje niekoľko spôsobov importu modulov. Sú uvedené nižšie …
Výpis importu z Pythonu
Môžeme importovať modul pomocou import
príkazu a pristupovať k definíciám v ňom pomocou bodkového operátora, ako je opísané vyššie. Tu je príklad.
# import statement example # to import standard module math import math print("The value of pi is", math.pi)
Po spustení programu bude výstup:
Hodnota pí je 3,141592653589793
Import s premenovaním
Modul môžeme importovať tak, že ho premenujeme nasledovne:
# import module by renaming it import math as m print("The value of pi is", m.pi)
math
Modul sme premenovali na m
. To nám v niektorých prípadoch môže ušetriť čas na písanie.
Upozorňujeme, že meno math
nie je v našom rozsahu rozpoznané. Preto math.pi
je neplatná a m.pi
je správnou implementáciou.
Python z … príkazu na import
Môžeme importovať konkrétne mená z modulu bez toho, aby sme importovali modul ako celok. Tu je príklad.
# import only pi from math module from math import pi print("The value of pi is", pi)
Sem sme importovali iba pi
atribút z math
modulu.
V takýchto prípadoch nepoužívame bodkový operátor. Môžeme tiež importovať viac atribútov nasledovne:
>>> from math import pi, e >>> pi 3.141592653589793 >>> e 2.718281828459045
Importujte všetky mená
Môžeme importovať všetky mená (definície) z modulu pomocou nasledujúceho konštruktu:
# import all names from the standard module math from math import * print("The value of pi is", pi)
Tu sme importovali všetky definície z matematického modulu. Zahŕňa to všetky mená viditeľné v našom rozsahu okrem tých, ktoré začínajú podčiarkovníkom (súkromné definície).
Importovanie všetkého so symbolom hviezdičky (*) nie je dobrým programovacím postupom. To môže viesť k duplicitným definíciám identifikátora. Tiež to sťažuje čitateľnosť nášho kódu.
Cesta vyhľadávania modulu Python
Počas importovania modulu sa Python pozrie na niekoľko miest. Tlmočník najskôr hľadá vstavaný modul. Potom (ak sa vstavaný modul nenájde) Python preskúma zoznam adresárov definovaných v sys.path
. Vyhľadávanie je v tomto poradí.
- Aktuálny adresár.
PYTHONPATH
(premenná prostredia so zoznamom adresárov).- Predvolený adresár závislý od inštalácie.
>>> import sys >>> sys.path ('', 'C: \ Python33 \ Lib \ idlelib', 'C: \ Windows \ system32 \ python33.zip', 'C: \ Python33 \ DLL ',' 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
Pomocou tejto dir()
funkcie môžeme zistiť mená, ktoré sú definované vo vnútri modulu.
Napríklad sme si definovali funkciu add()
v module, example
ktorý sme mali na začiatku.
Môžeme použiť dir
v example
module nasledujúcim spôsobom:
>>> dir(example) ('__builtins__', '__cached__', '__doc__', '__file__', '__initializing__', '__loader__', '__name__', '__package__', 'add')
Tu vidíme zoradený zoznam mien (spolu s add
). Všetky ostatné mená, ktoré začínajú podčiarkovníkom, sú predvolené atribúty Pythonu spojené s modulom (nedefinované používateľom).
Napríklad __name__
atribút obsahuje názov modulu.
>>> import example >>> example.__name__ 'example'
Všetky mená definované v našom súčasnom mennom priestore je možné zistiť pomocou dir()
funkcie bez akýchkoľvek argumentov.
>>> a = 1 >>> b = "hello" >>> import math >>> dir() ('__builtins__', '__doc__', '__name__', 'a', 'b', 'math', 'pyscripter')