Modul je ena datoteka .py; paket je direktorij modulov. Uvozi vam omogočijo, da uporabite kodo iz drugih modulov, pri čemer program organizirate v ponovno uporabne dele.
Moduli in uvažanje
(): 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
Datoteka __init__.py označi direktorij kot paket (in lahko zažene kodo za inicializacijo paketa ali definiše kaj from package import * izpostavi).
if __name__ == "__main__"def main():
print("running as a script")
if __name__ == "__main__": # True only when run directly, not when imported
main()
To datoteko omogoči, da deluje kot uvozljiv modul in kot izvršljiv skript — koda pod njim se zažene samo, ko se datoteka izvršiti neposredno (python file.py), ne pa ob uvozu. Skoraj univerzalen idiom Pythona.
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
Moduli in paketi so način, kako organizirate kodo Pythona v ponovno uporabne, lažje vzdržljive enote, namesto v eno ogromno datoteko — temeljno za katerikoli netrivialni projekt.
Razumevanje slogov uvoza, strukture paketa (__init__.py), idioma if __name__ == "__main__" (dvojno vedenje skripte/modula) in kako Python najde module (sys.path) je bistveno za strukturiranje projektov, ponovno uporabo kode in uporabo obsežne standardne knjižnice in ekosistema PyPI.
Napake pri uvozu in zmeda pri strukturi so pogosti zgodnji oviri, ki jih to znanje rešuje.