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.