Ebben a cikkben megtanulhatja egyéni modulok létrehozását és importálását a Pythonban. Különféle technikákat talál az egyéni és a beépített modulok importálására és használatára a Pythonban.
Videó: Python modulok
Mik a modulok a Pythonban?
A modulok egy fájlra vonatkoznak, amely Python utasításokat és definíciókat tartalmaz.
A Python kódot tartalmazó fájlt, például:, example.py
modulnak hívják, és annak modulneve a következő lenne example
.
Modulok segítségével a nagy programokat apró, kezelhető és szervezett fájlokra bontjuk. Ezenkívül a modulok biztosítják a kód újrafelhasználhatóságát.
Meghatározhatjuk a leggyakrabban használt függvényeinket egy modulban és importálhatjuk, ahelyett, hogy definícióikat más programokra másolnánk.
Hozzunk létre egy modult. Írja be a következőt, és mentse el másként example.py
.
# Python Module example def add(a, b): """This program adds two numbers and return the result""" result = a + b return result
Itt definiáltunk egy függvényt add()
egy nevű modul belsejében example
. A függvény két számot vesz fel, és visszaadja az összegüket.
Hogyan lehet modulokat importálni a Pythonba?
Importálhatjuk a modulon belüli definíciókat egy másik modulba vagy a Python interaktív tolmácsába.
import
Ehhez a kulcsszót használjuk . A korábban definiált modulunk importálásához example
írja be a következőket a Python parancssorba.
>>> import example
Ez nem importálja example
az aktuális szimbólumtáblázatban közvetlenül definiált függvények nevét . Csak oda importálja a modul nevét example
.
A modul nevét használva a dot .
operátor segítségével érhetjük el a funkciót . Például:
>>> example.add(4,5.5) 9.5
A Python rengeteg standard modullal rendelkezik. Megtekintheti a Python szabványos modulok teljes listáját és azok használati eseteit. Ezek a fájlok a Lib könyvtárban találhatók azon a helyen, ahová a Pythont telepítette.
A standard modulokat ugyanúgy lehet importálni, mint a felhasználó által definiált modulokat.
A modulok importálásának különféle módjai vannak. Az alábbiakban felsoroljuk őket …
Python importálási utasítás
Importálhatunk egy modult az import
utasítás segítségével, és elérhetjük a benne lévő definíciókat a fent leírt dot operátor segítségével. Itt egy példa.
# import statement example # to import standard module math import math print("The value of pi is", math.pi)
A program futtatásakor a kimenet a következő lesz:
A pi értéke 3,141592653589793
Importálás átnevezéssel
Importálhatunk egy modult a következõ átnevezéssel:
# import module by renaming it import math as m print("The value of pi is", m.pi)
Átneveztük a math
modult m
. Ez egyes esetekben megtakaríthat minket a gépelési időn.
Ne feledje, hogy a név math
nem szerepel a hatókörünkben. Ezért math.pi
érvénytelen, és m.pi
a helyes megvalósítás.
Python from… import utasítás
Importálhatunk bizonyos neveket egy modulból anélkül, hogy importálnánk a modul egészét. Itt egy példa.
# import only pi from math module from math import pi print("The value of pi is", pi)
Itt csak az pi
attribútumot importáltuk a math
modulból.
Ilyen esetekben nem használjuk a dot operátort. Több attribútumot is importálhatunk az alábbiak szerint:
>>> from math import pi, e >>> pi 3.141592653589793 >>> e 2.718281828459045
Importálja az összes nevet
Minden nevet (definíciót) importálhatunk egy modulból a következő konstrukció használatával:
# import all names from the standard module math from math import * print("The value of pi is", pi)
Itt importáltuk az összes definíciót a matematikai modulból. Ez magában foglalja az összes hatókörünkben látható nevet, kivéve az aláhúzással kezdődő neveket (privát meghatározások).
Importing everything with the asterisk (*) symbol is not a good programming practice. This can lead to duplicate definitions for an identifier. It also hampers the readability of our code.
Python Module Search Path
While importing a module, Python looks at several places. Interpreter first looks for a built-in module. Then(if built-in module not found), Python looks into a list of directories defined in sys.path
. The search is in this order.
- The current directory.
PYTHONPATH
(an environment variable with a list of directories).- The installation-dependent default directory.
>>> import sys >>> sys.path ('', 'C:\Python33\Lib\idlelib', 'C:\Windows\system32\python33.zip', 'C:\Python33\DLLs', '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
A dir()
függvény segítségével megtudhatjuk a modul belsejében definiált neveket.
Például meghatároztunk egy függvényt add()
a modulban, example
amely az elején volt.
Tudjuk használni dir
a example
modult a következő módon:
>>> dir(example) ('__builtins__', '__cached__', '__doc__', '__file__', '__initializing__', '__loader__', '__name__', '__package__', 'add')
Itt láthatjuk a nevek rendezett listáját (a nevekkel együtt add
). Minden más név, amely aláhúzással kezdődik, a modulhoz társított alapértelmezett Python attribútum (nem a felhasználó által definiált).
Például az __name__
attribútum tartalmazza a modul nevét.
>>> import example >>> example.__name__ 'example'
A jelenlegi névtérben definiált összes név dir()
argumentum nélkül megismerhető a függvény használatával .
>>> a = 1 >>> b = "hello" >>> import math >>> dir() ('__builtins__', '__doc__', '__name__', 'a', 'b', 'math', 'pyscripter')