Tässä artikkelissa opit luomaan ja tuomaan mukautettuja moduuleja Pythonissa. Löydät myös erilaisia tekniikoita mukautettujen ja sisäänrakennettujen moduulien tuontia ja käyttöä varten Pythonissa.
Video: Python-moduulit
Mitä moduulit ovat Pythonissa?
Moduulit viittaavat tiedostoon, joka sisältää Python-käskyt ja määritelmät.
Tiedostoa, joka sisältää esimerkiksi Python-koodin:, example.py
kutsutaan moduuliksi, ja sen moduulin nimi olisi example
.
Hajotamme suuria ohjelmia pieniksi hallittaviksi ja organisoiduiksi tiedostoiksi moduulien avulla. Lisäksi moduulit tarjoavat koodin uudelleenkäytettävyyden.
Voimme määritellä käytetyimmät toiminnot moduulissa ja tuoda sen sen sijaan, että kopioisimme niiden määritelmät eri ohjelmiin.
Luodaan moduuli. Kirjoita seuraava ja tallenna se nimellä example.py
.
# Python Module example def add(a, b): """This program adds two numbers and return the result""" result = a + b return result
Tässä olemme määrittäneet funktion add()
nimisen moduulin sisällä example
. Funktio ottaa kaksi lukua ja palauttaa niiden summan.
Kuinka tuoda moduuleja Pythoniin?
Voimme tuoda määritelmät moduulin sisällä toiseen moduuliin tai interaktiiviseen tulkkiin Pythonissa.
Käytämme tätä import
avainsanalla. Jos haluat tuoda aiemmin määritetyn moduulin example
, kirjoita seuraava Python-kehotteeseen.
>>> import example
Tämä ei tuo niiden funktioiden nimiä, jotka on määritetty example
suoraan nykyisessä symbolitaulukossa. Se tuo vain moduulin nimen example
sinne.
Moduulin nimen avulla voimme käyttää toimintoa pisteoperaattorin avulla .
. Esimerkiksi:
>>> example.add(4,5.5) 9.5
Pythonissa on tonnia vakiomoduuleja. Voit tarkistaa täydellisen luettelon Python-vakiomoduuleista ja niiden käyttötapauksista. Nämä tiedostot ovat Lib-hakemistossa sen sijainnin sisällä, johon olet asentanut Pythonin.
Vakiomoduulit voidaan tuoda samalla tavalla kuin tuomme käyttäjän määrittelemät moduulit.
Moduuleja voidaan tuoda eri tavoin. Ne on lueteltu alla …
Python-tuontilauseke
Voimme tuoda moduulin import
käskyn avulla ja käyttää sen sisällä olevia määritelmiä yllä kuvatulla pisteoperaattorilla. Tässä on esimerkki.
# import statement example # to import standard module math import math print("The value of pi is", math.pi)
Kun suoritat ohjelmaa, tulos on:
Pi: n arvo on 3,141592653589793
Tuo uudelleennimeämisellä
Voimme tuoda moduulin nimeämällä sen uudelleen seuraavasti:
# import module by renaming it import math as m print("The value of pi is", m.pi)
Olemme nimenneet math
moduulin uudelleen nimellä m
. Tämä voi joissakin tapauksissa säästää kirjoittamisaikaa.
Huomaa, että nimeä math
ei tunnisteta soveltamisalassamme. Siksi math.pi
on virheellinen ja m.pi
oikea toteutus.
Python from… -tuontilauseke
Voimme tuoda tiettyjä nimiä moduulista tuomatta moduulia kokonaisuutena. Tässä on esimerkki.
# import only pi from math module from math import pi print("The value of pi is", pi)
Täällä tuotiin vain pi
attribuutti math
moduulista.
Tällaisissa tapauksissa emme käytä pisteoperaattoria. Voimme tuoda myös useita määritteitä seuraavasti:
>>> from math import pi, e >>> pi 3.141592653589793 >>> e 2.718281828459045
Tuo kaikki nimet
Voimme tuoda kaikki nimet (määritelmät) moduulista seuraavan rakenteen avulla:
# import all names from the standard module math from math import * print("The value of pi is", pi)
Tässä olemme tuoneet kaikki määritelmät matematiikkamoduulista. Tämä sisältää kaikki soveltamisalassamme näkyvät nimet, paitsi alaviivalla alkavat nimet (yksityiset määritelmät).
Kaikkien tähtimerkillä (*) tuonti ei ole hyvä ohjelmointikäytäntö. Tämä voi johtaa päällekkäisiin määritelmiin tunnisteelle. Se haittaa myös koodimme luettavuutta.
Python-moduulin hakupolku
Tuodessaan moduulia Python tarkastelee useita paikkoja. Tulkki etsii ensin sisäänrakennettua moduulia. Sitten (jos sisäänrakennettua moduulia ei löydy), Python etsii luetteloa hakemistosta, joka on määritelty kohdassa sys.path
. Haku on tässä järjestyksessä.
- Nykyinen hakemisto.
PYTHONPATH
(ympäristömuuttuja luetteloluettelolla).- Asennuksesta riippuva oletushakemisto.
>>> tuo sys >>> sys.path ('', 'C: \ Python33 \ Lib idlelib', 'C: \ Windows \ system32 \ python33.zip', 'C: \ Python33 \ DLLs, 'C: \ Python33 \ lib', 'C: \ Python33', 'C: \ Python33 \ lib \ site-package')
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
Voimme käyttää dir()
funktiota selvittämään moduulin sisällä määritetyt nimet.
Olemme esimerkiksi määrittäneet add()
moduulissa toiminnon , example
joka meillä oli alussa.
Voimme käyttää dir
vuonna example
moduulia seuraavasti:
>>> dir(example) ('__builtins__', '__cached__', '__doc__', '__file__', '__initializing__', '__loader__', '__name__', '__package__', 'add')
Täällä voimme nähdä lajiteltu luettelo nimistä (yhdessä add
). Kaikki muut alaviivalla alkavat nimet ovat moduuliin liittyviä oletusarvoisia Python-määritteitä (ei käyttäjän määrittelemiä).
Esimerkiksi __name__
attribuutti sisältää moduulin nimen.
>>> import example >>> example.__name__ 'example'
Kaikki nykyisessä nimitilassa määritellyt nimet voidaan selvittää dir()
funktion avulla ilman argumentteja.
>>> a = 1 >>> b = "hello" >>> import math >>> dir() ('__builtins__', '__doc__', '__name__', 'a', 'b', 'math', 'pyscripter')