Sobes.tech
Junior

Aký typ typizácie je v Pythone: statický alebo dynamický?

sobes.tech AI

Odpoveď od AI

Dynamické, ale s prvkami statickej typizácie vďaka anotáciám typov.

Pri dynamickom typovaní sa typ premennej určuje počas behu programu na základe priradenej hodnoty.

# Dynamické typovanie: x môže nadobúdať rôzne dátové typy
x = 10  # int
x = "ahoj" # str

Od verzie Python 3.5 boli pridané anotácie typov (type hints), ktoré umožňujú uviesť očakávaný typ premennej, argumentu funkcie alebo návratovej hodnoty. To neznamená, že Python je staticky typovaný jazyk v klasickom zmysle, ale umožňuje používať statické analyzátory kódu (napríklad mypy) na kontrolu typov pred spustením programu.

# Anotácie typov
def greet(name: str) -> str:
    return f"Ahoj, {name}"

vek: int = 30

Hlavné rozdiely medzi dynamickým a statickým typovaním:

Charakteristika Dynamické typovanie Statické typovanie
Definícia typov Počas behu programu Počas kompilácie
Kontrola chýb typov Počas behu programu Počas kompilácie
Flexibilita Vyššia Nižšia
Výkon Môže byť nižší (kvôli kontrolám počas behu) Zvyčajne vyšší (typy sú známe vopred)

Napriek anotáciám, Python zostáva jazyk s dynamickým typovaním, pretože kontrola typov počas behu stále prebieha, a je možné priradiť premennej hodnotu iného typu, aj keď bola použitá syntaktická anotácia. Anotácie slúžia na zlepšenie čitateľnosti kódu, uľahčenie ladenia a na používanie nástrojov na statickú analýzu.