Selles artiklis õpitakse Pythonis kohandatud mooduleid looma ja importima. Lisaks leiate Pythonis kohandatud ja sisseehitatud moodulite importimiseks ja kasutamiseks erinevaid tehnikaid.
Video: Pythoni moodulid
Mis on Pythoni moodulid?
Moodulid viitavad failile, mis sisaldab Pythoni lauseid ja definitsioone.
Faili, mis sisaldab näiteks Pythoni koodi, example.py
nimetatakse mooduliks ja selle mooduli nimi oleks example
.
Moodulite abil jagame suured programmid väikesteks hallatavateks ja korrastatud failideks. Lisaks pakuvad moodulid koodi korduvkasutatavust.
Võime määratleda oma kõige sagedamini kasutatavad funktsioonid moodulis ja importida selle asemel, et kopeerida nende definitsioonid erinevatesse programmidesse.
Loogem moodul. Sisestage järgmine ja salvestage see nimega example.py
.
# Python Module example def add(a, b): """This program adds two numbers and return the result""" result = a + b return result
Siin oleme määranud funktsiooni add()
mooduli sees nimega example
. Funktsioon võtab sisse kaks arvu ja tagastab nende summa.
Kuidas mooduleid Pythoni importida?
Saame importida definitsioone mooduli sees teise moodulisse või Pythoni interaktiivsesse tõlki.
Selleks kasutame import
märksõna. Varem määratletud mooduli importimiseks example
sisestame Pythoni viipasse järgmise.
>>> import example
See ei impordi funktsioonide nimesid, mis on määratletud example
otse praeguses sümbolitabelis. See impordib example
sinna ainult mooduli nime .
Mooduli nime kasutades pääseme funktsioonile punktioperaatori abil .
. Näiteks:
>>> example.add(4,5.5) 9.5
Pythonil on tonne standardmooduleid. Saate vaadata Pythoni standardmoodulite täielikku loendit ja nende kasutamise juhtumeid. Need failid asuvad kataloogis Lib asukohas, kuhu installisite Pythoni.
Standardmooduleid saab importida samamoodi nagu meie enda määratletud mooduleid.
Moodulite importimiseks on mitu võimalust. Need on loetletud allpool …
Pythoni impordilause
Me võime mooduli importida import
lause abil ja pääseda selle sees olevate definitsioonide juurde, kasutades punktioperaatorit, nagu eespool kirjeldatud. Siin on näide.
# import statement example # to import standard module math import math print("The value of pi is", math.pi)
Programmi käivitamisel on väljund järgmine:
Pi väärtus on 3,141592653589793
Import koos ümbernimetamisega
Mooduli saab importida, nimetades selle ümber järgmiselt:
# import module by renaming it import math as m print("The value of pi is", m.pi)
Oleme math
mooduli ümber nimetanud m
. See võib mõnel juhul säästa meid tippimisajast.
Pange tähele, et seda nime math
meie tegevusvaldkonnas ei tunnustata. Seega math.pi
on kehtetu ja m.pi
õige rakendamine.
Pythoni impordi avaldus
Konkreetsed nimed saame moodulist importida ilma moodulit tervikuna importimata. Siin on näide.
# import only pi from math module from math import pi print("The value of pi is", pi)
Siin importisime moodulist ainult pi
atribuudi math
.
Sellistel juhtudel ei kasuta me punktoperaatorit. Saame importida ka mitu atribuuti järgmiselt:
>>> from math import pi, e >>> pi 3.141592653589793 >>> e 2.718281828459045
Importige kõik nimed
Kõiki nimesid (definitsioone) saab moodulist importida järgmise konstruktsiooni abil:
# import all names from the standard module math from math import * print("The value of pi is", pi)
Siin oleme importinud kõik definitsioonid matemaatika moodulist. See hõlmab kõiki meie reguleerimisalas nähtavaid nimesid, välja arvatud alakriipsuga algavad nimed (privaatsed definitsioonid).
Tärni (*) sümboliga kõige importimine ei ole hea programmeerimistava. See võib viia identifikaatori definitsioonide duplikaadini. See takistab ka meie koodi loetavust.
Pythoni mooduli otsingu tee
Mooduli importimisel vaatab Python mitut kohta. Tõlk otsib kõigepealt sisseehitatud moodulit. Seejärel (kui sisseehitatud moodulit ei leitud) otsib Python kataloogis määratletud kataloogide loendit sys.path
. Otsing on selles järjekorras.
- Praegune kataloog.
PYTHONPATH
(keskkonnamuutuja kataloogide loendiga).- Installist sõltuv vaikekataloog.
>>> importige sys >>> sys.path ('', 'C: \ Python33 \ Lib \ idlelib', 'C: \ Windows \ system32 \ python33.zip', 'C: \ Python33 \ DLL-id ',' C: \ Python33 \ lib ',' C: \ Python33 ',' C: \ Python33 \ lib \ saidipaketid ')
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
dir()
Funktsiooni abil saame teada mooduli sees määratletud nimed.
Näiteks oleme add()
moodulis määratlenud funktsiooni , example
mis meil alguses oli.
Saame kasutada dir
ka example
moodul järgmisel viisil:
>>> dir(example) ('__builtins__', '__cached__', '__doc__', '__file__', '__initializing__', '__loader__', '__name__', '__package__', 'add')
Siin näeme järjestatud nimede loendit (koos add
). Kõik muud nimed, mis algavad alakriipsuga, on mooduliga seotud Pythoni vaikeatribuudid (mitte kasutaja määratletud).
Näiteks __name__
sisaldab atribuut mooduli nime.
>>> import example >>> example.__name__ 'example'
Kõik meie praeguses nimeruumis määratletud nimed saab dir()
funktsiooni abil teada ilma argumentideta.
>>> a = 1 >>> b = "hello" >>> import math >>> dir() ('__builtins__', '__doc__', '__name__', 'a', 'b', 'math', 'pyscripter')