A modul egy .py fájl; a csomag modulok könyvtára. Az importok lehetővé teszik más modulok kódjának használatát, egy programot újrafelhasználható részekre szervezve.
Modulok és importok
(): a + b
PI =
# main.py — different ways to import
import math_utils # import the whole module
math_utils.add(2, 3) # access via the module name
from math_utils import add, PI # import specific names
add(2, 3) # use directly
from math_utils import add as plus # import with an alias
import numpy as np # common aliasing convention
mypackage/
__init__.py ← marks it as a package (can be empty)
module_a.py
subpackage/
__init__.py
module_b.py
from mypackage.module_a import something
from mypackage.subpackage.module_b import other
Az __init__.py fájl egy könyvtárat csomagként jelöl meg (és futtathat csomag-init kódot, vagy definiálhat, hogy a from package import * mit tár fel).
if __name__ == "__main__" idiomadef main():
print("running as a script")
if __name__ == "__main__": # True only when run directly, not when imported
main()
Ez lehetővé teszi egy fájl számára, hogy importálható modulként és futtatható scriptként működjön — az alatta lévő kód csak akkor fut, amikor a fájlt közvetlenül hajtják végre (python file.py), nem importáláskor. Csaknem univerzális Python idioma.
import sys
sys.path # the list of directories Python searches for imports
# includes: the current directory, installed packages (site-packages), stdlib
import os, json, datetime # standard library — "batteries included"
import requests # third-party — installed via pip from PyPI
A modulok és csomagok az a mód, ahogyan a Python kódot újrafelhasználható, karbantartható egységekre szervezed egy hatalmas fájl helyett — alapvető bármely nem triviális projekthez.
Az importálási stílusok, csomag szerkezete (__init__.py), a if __name__ == "__main__" idioma (kettős script/modul viselkedés) és a Python modulok keresésének módja (sys.path) ismerete elengedhetetlen a projektek strukturálásához, a kód újrafelhasználásához és a hatalmas standard könyvtár és PyPI ökoszisztéma használatához.
Az importálási hibák és a szerkezeti zavar gyakori kezdeti akadályok, amelyeket ez az ismeret megold.