Ugrás a tartalomhoz

Python module

A Wikiszótárból, a nyitott szótárból


Főnév

Python module (tsz. Python modules)

  1. (informatika) A modul a Python egyik alapvető fogalma, amely lehetővé teszi a kód strukturált szervezését, újrafelhasználhatóságát és karbantarthatóságát. Egy modul tulajdonképpen nem más, mint egy .py kiterjesztésű Python-fájl, amelyben változókat, függvényeket, osztályokat, konstansokat és futtatható kódrészeket helyezhetünk el.

Miért használjunk modulokat?

Python-modulokat akkor érdemes használni, ha:

  • Nagyobb programokat szeretnénk több fájlra bontani.
  • Közös kódrészeket (pl. segédfüggvényeket) több projektben is fel szeretnénk használni.
  • Logikailag elkülönítenénk a programunk különböző komponenseit (pl. adatkezelés, megjelenítés, algoritmusok stb.).
  • Harmadik féltől származó bővítményeket (library-kat) szeretnénk használni.

Modul létrehozása

Nagyon egyszerűen létrehozhatunk saját modult: csak hozzunk létre egy .py fájlt. Példa:

# greeting.py modul

def say_hello(name):
    return f"Hello, {name}!"

Most ezt a modult másik fájlból is felhasználhatjuk:

# main.py

import greeting

print(greeting.say_hello("Alice"))

Kimenet:

Hello, Alice!

Modul importálása

Pythonban modulokat az import kulcsszóval importálunk. Többféleképpen lehet importálni:

1️⃣ Teljes modul importálása

import math

print(math.sqrt(16))  # 4.0

2️⃣ Csak bizonyos elemek importálása

from math import sqrt

print(sqrt(25))  # 5.0

3️⃣ Minden elem importálása (nem ajánlott)

from math import *
print(sin(pi / 2))  # 1.0

4️⃣ Modul alias (álnév) használata

import math as m

print(m.cos(0))  # 1.0

Python beépített modulok

A Python számos beépített modult kínál, például:

  • math – matematikai függvények
  • random – véletlenszám-generálás
  • datetime – dátum/idő kezelés
  • os – operációs rendszerrel való kommunikáció
  • sys – Python interpreter információk
  • json – JSON-fájlok kezelése
  • re – reguláris kifejezések
  • statistics – statisztikai számítások

Példa: random modul használata

import random

print(random.randint(1, 10))  # Véletlen szám 1 és 10 között

Külső modulok (third-party modules)

A beépítetteken túl számtalan külső modul is elérhető a Python Package Index (PyPI) segítségével. Ezeket a pip csomagkezelővel telepíthetjük.

Példa:

pip install requests

Majd a kódban:

import requests

response = requests.get('https://example.com')
print(response.status_code)

A modulok helye és a sys.path

A Python interpreter a modulokat a következő helyeken keresi (sorrendben):

  1. Az aktuális könyvtárban.
  2. A PYTHONPATH környezeti változóban megadott könyvtárakban.
  3. A Python telepítésének site-packages mappájában.

A keresési útvonalakat a sys.path listából tudjuk lekérdezni:

import sys

print(sys.path)

Ha egy mappát fel szeretnénk venni a keresési útvonalak közé:

sys.path.append('/path/to/my/modules')

__name__ == "__main__" használata

Ha modulokat írunk, gyakran látunk ilyet:

def main():
    print("Ez a program fő része.")

if __name__ == "__main__":
    main()

Magyarázat:

  • Ha a modult futtatjuk, akkor a __name__ változó "__main__" értéket kap.
  • Ha a modult importáljuk, akkor a __name__ nem "__main__", hanem a modul neve lesz.
  • Ezzel elérjük, hogy a main() csak akkor fusson le, ha közvetlenül futtatjuk a fájlt.

Modulok csoportosítása: package-ek

Ha sok modult használunk, érdemes őket package-ekbe szervezni.

Egy package nem más, mint egy mappa, amelyben van egy __init__.py fájl (akár üresen is).

Struktúra:

my_package/
    __init__.py
    module1.py
    module2.py

Használat:

from my_package import module1

module1.my_function()

Vagy:

import my_package.module2

Modul cache: __pycache__

Ha futtatunk vagy importálunk egy modult, a Python az adott verzióhoz lefordítja bytecode-ra (.pyc fájlba), és a __pycache__ mappába teszi.

Ez gyorsítja a következő futtatásokat, mert nem kell újra parse-olnia az eredeti .py fájlt.

Modul dokumentáció

Fontos, hogy a moduljainkhoz írjunk dokumentációt:

"""
greeting modul

Tartalom:
- say_hello(name): köszönést ad vissza
"""

def say_hello(name):
    """Adott névhez üdvözlő üzenet"""
    return f"Hello, {name}!"

A help() függvénnyel lekérhetjük a dokumentációt:

import greeting
help(greeting)

Gyakori modulhasználati minták

1️⃣ Utility modulok

Segédfüggvényeket külön modulba teszünk:

# utils.py

def is_even(n):
    return n % 2 == 0

2️⃣ Konfigurációs modul

Konstansokat modulba szervezünk:

# config.py

DB_HOST = "localhost"
DB_PORT = 5432

3️⃣ Több modulos alkalmazás

# main.py
# src/
#    __init__.py
#    data.py
#    logic.py
#    ui.py

Modul tesztelés

Gyakran írunk modulokhoz unit teszteket:

# test_greeting.py
import greeting

def test_say_hello():
    assert greeting.say_hello("World") == "Hello, World!"

A teszt futtatásához használhatunk pytest vagy unittest modult.

pytest test_greeting.py

Modul verziókezelés

Ha saját modulunkat más projektekben is használni akarjuk, érdemes verziószámmal ellátni:

__version__ = "1.0.0"

Ekkor mások is tudják, hogy melyik verzió van telepítve.

import greeting
print(greeting.__version__)

Összefoglalás

A Python modulok lehetővé teszik:

✅ a kód felosztását és újrafelhasználásátharmadik féltől származó csomagok integrálását ✅ logikus struktúrák építését ✅ könnyebb karbantartásttesztelhetőséget

Alapvető importálási módok:

import modul
from modul import elem
import modul as alias

Alkalmazási területek:

  • Beépített modulok (math, random, os stb.)
  • Külső könyvtárak (numpy, pandas, requests stb.)
  • Saját modulok és package-ek