Moduly Python: Naučte sa vytvárať a importovať vlastné a vstavané moduly

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.pysa 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 importkľúč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é examplepriamo 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 importprí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)

mathModul sme premenovali na m. To nám v niektorých prípadoch môže ušetriť čas na písanie.

Upozorňujeme, že meno mathnie je v našom rozsahu rozpoznané. Preto math.pije neplatná a m.pije 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 piatribút z mathmodulu.

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, examplektorý sme mali na začiatku.

Môžeme použiť dirv examplemodule 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')

Zaujímavé články...