-
Recapitulare module și pachete
- Definirea modulelor și pachetelor
- Importarea modulelor și pachetelor
-
Organizarea pachetelor
- Structura pachetelor
- Pachetele de nivel înalt și subpachete
-
Utilizarea fișierelor
__init__.py- Rolul fișierelor
__init__.py - Inițializarea pachetelor și importurile implicite
- Rolul fișierelor
-
Importarea relativă
- Importul relativ în pachete
- Avantaje și dezavantaje ale importului relativ
-
Manipularea căii de căutare a modulelor
- Prezentarea
sys.path - Adăugarea și eliminarea căilor din
sys.path
- Prezentarea
-
Modulul
importlib- Prezentarea modulului
importlib - Funcții utile pentru lucrul cu module și pachete
- Prezentarea modulului
-
Crearea și distribuirea pachetelor
- Structura pachetelor distribuibile
- Utilizarea
setuptoolspentru a crea și instala pachete
-
Recapitulare și bune practici
- Rezumatul lecției și a tehnicilor prezentate
- Bune practici pentru organizarea și utilizarea modulelor și pachetelor
Exemple și exerciții pentru fiecare subpunct:
Exemplu: Structura unui pachet
mypackage/
__init__.py
module1.py
module2.py
subpackage/
__init__.py
module3.py
Exercițiu:
Creați un pachet cu cel puțin două module și un subpachet. Importați funcții din module și subpachete într-un script Python.
Exemplu: Utilizarea fișierelor __init__.py
# mypackage/__init__.py
from .module1 import functie1
from .module2 import functie2
# script.py
from mypackage import functie1, functie2
functie1()
functie2()
Exercițiu:
Creați un pachet cu un fișier __init__.py care să importe funcții din modulele pachetului. Utilizați aceste funcții într-un script Python.
Exemplu: Importarea relativă
# mypackage/module1.py
def functie1():
pass
# mypackage/module2.py
from . import module1
module1.functie1()
Exercițiu:
Modificați pachetul creat în exercițiile anterioare pentru a utiliza importurile relative între module.
Exemplu: Manipularea căii de căutare a modulelor
import sys
sys.path.append("/cale/la/pachet")
sys.path.remove("/cale/la/pachet")
Exercițiu:
Creați un director cu un modul și adăugați directorul în sys.path. Importați modulul într-un script Python.
Exemplu: Modulul importlib
import importlib
module = importlib.import_module("math")
print(module.sqrt(4))
importlib.reload(module)
Exercițiu:
Utilizați modulul importlib pentru a importa dinamic un modul și să apelați o funcție din acesta.
Exemplu: Crearea și distribuirea pachetelor
mypackage/
setup.py
mypackage/
__init__.py
module1.py
module2.py
# setup.py
from setuptools import setup, find_packages
setup(
name="mypackage",
version="0.1.0",
packages=find_packages(),
install_requires=[],
)
Exercițiu:
Creați un pachet distribuibil cu un fișier setup.py. Instalați pachetul local și utilizați-l într-un script Python.
Rezumat:
În această lecție, am discutat despre lucrul avansat cu module și pachete în Python. Am recapitulat conceptele de bază privind modulele și pachetele și am explorat organizarea pachetelor, inclusiv structura lor și utilizarea subpachetelor.
Am discutat despre rolul fișierelor __init__.py în inițializarea pachetelor și importurile implicite. Am prezentat importul relativ și am comparat avantajele și dezavantajele sale în raport cu importul absolut.
Am explorat manipularea căii de căutare a modulelor prin intermediul variabilei sys.path și am învățat cum să adăugăm și să eliminăm căi din aceasta. Am discutat despre modulul importlib și am prezentat funcții utile pentru lucrul cu module și pachete în Python.
Am abordat crearea și distribuirea pachetelor, explicând structura pachetelor distribuibile și utilizarea setuptools pentru a crea și instala pachete. În final, am recapitulat lecția și am oferit bune practici pentru organizarea și utilizarea modulelor și pachetelor în Python.
Cunoștințele dobândite în această lecție ne vor ajuta să lucrăm cu module și pachete în moduri avansate și să structurăm proiectele noastre într-un mod mai eficient și scalabil. Aceste tehnici sunt utile pentru a crea biblioteci și aplicații reutilizabile, pentru a împărtăși cod între proiecte și pentru a crea pachete distribuibile care pot fi instalate și utilizate de alți dezvoltatori.