Šajā rakstā jūs iemācīsities izveidot un importēt pielāgotus moduļus Python. Turklāt jūs atradīsit dažādas metodes, kā importēt un izmantot pielāgotus un iebūvētus moduļus Python.
Video: Python moduļi
Kas ir moduļi Python?
Moduļi attiecas uz failu, kurā ir Python priekšraksti un definīcijas.
Fails, kas satur Python kodu, piemēram:, example.py
tiek saukts par moduli, un tā moduļa nosaukums būtu example
.
Mēs izmantojam moduļus, lai sadalītu lielas programmas mazos pārvaldāmos un organizētos failos. Turklāt moduļi nodrošina koda atkārtotu izmantošanu.
Mēs varam definēt mūsu visbiežāk izmantotās funkcijas modulī un importēt, nevis kopēt to definīcijas dažādās programmās.
Izveidosim moduli. Ierakstiet šo un saglabājiet to kā example.py
.
# Python Module example def add(a, b): """This program adds two numbers and return the result""" result = a + b return result
Šeit mēs esam definējuši funkciju add()
moduļa iekšpusē ar nosaukumu example
. Funkcija uzņem divus skaitļus un atgriež to summu.
Kā importēt moduļus Python?
Mēs varam importēt definīcijas moduļa iekšienē uz citu moduli vai interaktīvo tulku Python.
import
Lai to izdarītu, mēs izmantojam atslēgvārdu. Lai importētu mūsu iepriekš definēto moduli example
, Python uzvednē ierakstām šo.
>>> import example
Tas neimportē funkciju nosaukumus, kas definēti example
tieši pašreizējā simbolu tabulā. Tas example
tur importē tikai moduļa nosaukumu .
Izmantojot moduļa nosaukumu, mēs varam piekļūt funkcijai, izmantojot punktu .
operatoru. Piemēram:
>>> example.add(4,5.5) 9.5
Python ir daudz standarta moduļu. Jūs varat apskatīt pilnu Python standarta moduļu sarakstu un to izmantošanas gadījumus. Šie faili atrodas Lib direktorijā vietā, kur instalējāt Python.
Standarta moduļus var importēt tāpat kā mēs importējam lietotāja definētos moduļus.
Ir dažādi veidi, kā importēt moduļus. Tie ir uzskaitīti zemāk …
Python importēšanas paziņojums
Mēs varam importēt moduli, izmantojot import
priekšrakstu, un piekļūt definīcijām tajā, izmantojot punktu operatoru, kā aprakstīts iepriekš. Šeit ir piemērs.
# import statement example # to import standard module math import math print("The value of pi is", math.pi)
Palaidot programmu, izeja būs:
Pī vērtība ir 3,141592653589793
Importēt ar pārdēvēšanu
Mēs varam importēt moduli, pārdēvējot to šādi:
# import module by renaming it import math as m print("The value of pi is", m.pi)
Mēs esam pārdēvējuši math
moduli kā m
. Dažos gadījumos tas var ietaupīt rakstīšanas laiku.
Ņemiet vērā, ka nosaukums math
nav atzīts mūsu darbības jomā. Tādējādi math.pi
nav derīga un m.pi
ir pareiza ieviešana.
Python from … importa paziņojums
Mēs varam importēt konkrētus nosaukumus no moduļa, neimportējot moduli kopumā. Šeit ir piemērs.
# import only pi from math module from math import pi print("The value of pi is", pi)
Šeit mēs importējām tikai moduļa pi
atribūtu math
.
Šādos gadījumos mēs neizmantojam punktu operatoru. Mēs varam importēt arī vairākus atribūtus šādi:
>>> from math import pi, e >>> pi 3.141592653589793 >>> e 2.718281828459045
Importēt visus vārdus
Mēs varam importēt visus nosaukumus (definīcijas) no moduļa, izmantojot šādu konstrukciju:
# import all names from the standard module math from math import * print("The value of pi is", pi)
Šeit mēs esam importējuši visas definīcijas no matemātikas moduļa. Tas ietver visus mūsu darbības sfērā redzamos vārdus, izņemot tos, kas sākas ar pasvītrojumu (privātās definīcijas).
Importēt visu ar zvaigznīti (*) nav laba programmēšanas prakse. Tas var izraisīt identifikatora definīciju dublikātus. Tas arī kavē mūsu koda lasāmību.
Python moduļu meklēšanas ceļš
Importējot moduli, Python aplūko vairākas vietas. Tulks vispirms meklē iebūvētu moduli. Tad (ja iebūvētais modulis nav atrasts), Python izskata direktoriju sarakstu, kas definēts sys.path
. Meklēšana notiek šādā secībā.
- Pašreizējais direktorijs.
PYTHONPATH
(vides mainīgais ar direktoriju sarakstu).- No instalācijas atkarīgs noklusējuma direktorijs.
>>> importējiet sys >>> sys.path ('', 'C: \ Python33 \ Lib \ idlelib', 'C: \ Windows \ system32 \ python33.zip', 'C: \ Python33 \ DLLs "," C: Python33 lib "," C: Python33 "," C: Python33 lib "vietņu paketes")
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
Mēs varam izmantot dir()
funkciju, lai uzzinātu nosaukumus, kas definēti moduļa iekšienē.
Piemēram, add()
modulī esam definējuši funkciju , example
kas mums bija sākumā.
Mēs varam izmantot dir
šajā example
modulī šādā veidā:
>>> dir(example) ('__builtins__', '__cached__', '__doc__', '__file__', '__initializing__', '__loader__', '__name__', '__package__', 'add')
Šeit mēs varam redzēt sakārtotu vārdu sarakstu (kopā ar add
). Visi pārējie nosaukumi, kas sākas ar pasvītrojumu, ir noklusējuma Python atribūti, kas saistīti ar moduli (nav lietotāja definēti).
Piemēram, __name__
atribūtā ir moduļa nosaukums.
>>> import example >>> example.__name__ 'example'
Visus mūsu pašreizējā nosaukumvietā definētos nosaukumus var uzzināt, izmantojot dir()
funkciju bez jebkādiem argumentiem.
>>> a = 1 >>> b = "hello" >>> import math >>> dir() ('__builtins__', '__doc__', '__name__', 'a', 'b', 'math', 'pyscripter')