Python modulok: Ismerje meg az egyéni és a beépített modulok létrehozását és importálását

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.pymodulnak 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.

importEhhez 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 exampleaz 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 importutasí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 mathmodult m. Ez egyes esetekben megtakaríthat minket a gépelési időn.

Ne feledje, hogy a név mathnem szerepel a hatókörünkben. Ezért math.piérvénytelen, és m.pia 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 piattribútumot importáltuk a mathmodulbó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, exampleamely az elején volt.

Tudjuk használni dira examplemodult 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')

érdekes cikkek...