V tem članku se boste naučili ustvarjati in uvažati module po meri v Pythonu. Našli boste tudi različne tehnike za uvoz in uporabo prilagojenih in vgrajenih modulov v Pythonu.
Video: Python moduli
Kaj so moduli v Pythonu?
Moduli se nanašajo na datoteko, ki vsebuje izjave in definicije Python.
Datoteka, ki vsebuje kodo Python, na primer:, example.py
se imenuje modul in ime modula bi bilo example
.
Module uporabljamo za razčlenitev velikih programov na majhne obvladljive in organizirane datoteke. Poleg tega moduli omogočajo ponovno uporabo kode.
V modulu lahko definiramo svoje najpogosteje uporabljene funkcije in jih uvozimo, namesto da bi njihove definicije kopirali v različne programe.
Ustvarimo modul. Vnesite naslednje in ga shranite kot example.py
.
# Python Module example def add(a, b): """This program adds two numbers and return the result""" result = a + b return result
Tu smo definirali funkcijo add()
znotraj modula z imenom example
. Funkcija sprejme dve številki in vrne njihovo vsoto.
Kako uvoziti module v Python?
Definicije znotraj modula lahko uvozimo v drug modul ali interaktivni tolmač v Pythonu.
Za to uporabljamo import
ključno besedo. Za uvoz našega predhodno definiranega modula example
v poziv Python vtipkamo naslednje.
>>> import example
To ne uvozi imen funkcij, definiranih v example
neposredno v trenutni tabeli simbolov. Tam uvozi samo ime modula example
.
Z imenom modula lahko dostopamo do funkcije s pomočjo pikčastega .
operatorja. Na primer:
>>> example.add(4,5.5) 9.5
Python ima na tone standardnih modulov. Oglejte si celoten seznam standardnih modulov Python in primere njihove uporabe. Te datoteke so v imeniku Lib znotraj lokacije, kjer ste namestili Python.
Standardne module lahko uvozite na enak način kot uvozimo uporabniško določene module.
Obstajajo različni načini za uvoz modulov. Spodaj so navedeni …
Izjava o uvozu Pythona
Modul lahko uvozimo s pomočjo import
stavka in dostopamo do definicij v njem z uporabo pikčastega operatorja, kot je opisano zgoraj. Tu je primer.
# import statement example # to import standard module math import math print("The value of pi is", math.pi)
Ko zaženete program, bo rezultat:
Vrednost pi je 3,141592653589793
Uvoz s preimenovanjem
Modul lahko uvozimo tako, da ga preimenujemo na naslednji način:
# import module by renaming it import math as m print("The value of pi is", m.pi)
math
Modul smo preimenovali v m
. To nam lahko v nekaterih primerih prihrani čas tipkanja.
Upoštevajte, da ime math
ni prepoznano v našem obsegu. Zato math.pi
je neveljavna in m.pi
je pravilna izvedba.
Python iz … izjave o uvozu
Iz modula lahko uvozimo določena imena, ne da bi ga uvažali kot celoto. Tu je primer.
# import only pi from math module from math import pi print("The value of pi is", pi)
Tu smo pi
iz math
modula uvozili samo atribut .
V takih primerih ne uporabljamo operatorja pik. Uvažamo lahko tudi več atributov, kot sledi:
>>> from math import pi, e >>> pi 3.141592653589793 >>> e 2.718281828459045
Uvozi vsa imena
Vsa imena (definicije) lahko iz modula uvozimo z naslednjo konstrukcijo:
# import all names from the standard module math from math import * print("The value of pi is", pi)
Tu smo uvozili vse definicije iz matematičnega modula. Sem spadajo vsa imena, ki so vidna v našem obsegu, razen tistih, ki se začnejo s podčrtajem (zasebne opredelitve).
Uvoz vsega z zvezdico (*) ni dobra programska praksa. To lahko privede do podvojenih definicij identifikatorja. Prav tako ovira berljivost naše kode.
Pot iskanja modula Python
Med uvozom modula Python pogleda na več krajev. Tolmač najprej išče vgrajen modul. Nato (če vgrajenega modula ni mogoče najti) Python pregleda seznam imenikov, definiranih v sys.path
. Iskanje je v tem vrstnem redu.
- Trenutni imenik.
PYTHONPATH
(spremenljivka okolja s seznamom imenikov).- Od namestitve odvisen privzeti imenik.
>>> uvoz sys >>> sys.path ('', 'C: \ Python33 \ Lib \ idlelib', 'C: \ Windows \ system32 \ python33.zip', 'C: \ Python33 \ DLL-ji ',' C: \ Python33 \ lib ',' C: \ Python33 ',' C: \ Python33 \ lib \ spletna paketa ')
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
S pomočjo dir()
funkcije lahko poiščemo imena, ki so definirana znotraj modula.
Na primer, add()
v modulu example
smo definirali funkcijo, ki smo jo imeli na začetku.
Mi lahko uporabite dir
v example
modulu na naslednji način:
>>> dir(example) ('__builtins__', '__cached__', '__doc__', '__file__', '__initializing__', '__loader__', '__name__', '__package__', 'add')
Tu lahko vidimo razvrščen seznam imen (skupaj z add
). Vsa druga imena, ki se začnejo s podčrtaji, so privzeti atributi Python, povezani z modulom (niso uporabniško določeni).
__name__
Atribut na primer vsebuje ime modula.
>>> import example >>> example.__name__ 'example'
Vsa imena, določena v našem trenutnem imenskem prostoru, je mogoče najti s pomočjo dir()
funkcije brez kakršnih koli argumentov.
>>> a = 1 >>> b = "hello" >>> import math >>> dir() ('__builtins__', '__doc__', '__name__', 'a', 'b', 'math', 'pyscripter')