Jaký typ typizace je v Pythonu: statický nebo dynamický?
sobes.tech AI
Odpověď od AI
Dynamické, ale s prvky statického typování díky anotacím typů.
V dynamickém typování je typ proměnné určen během běhu programu na základě přiřazené hodnoty.
# Dynamické typování: x může nabývat různých datových typů
x = 10 # int
x = "ahoj" # str
Od verze Python 3.5 byly přidány anotace typů (type hints), které umožňují uvést očekávaný typ proměnné, argumentu funkce nebo návratové hodnoty. To Pythonu nezpůsobí, že je staticky typovaný jazyk v klasickém smyslu, ale umožňuje používat statické analyzátory kódu (například mypy) k ověření typů před spuštěním programu.
# Anotace typů
def greet(name: str) -> str:
return f"Ahoj, {name}"
věk: int = 30
Hlavní rozdíly mezi dynamickým a statickým typováním:
| Charakteristika | Dynamické typování | Statické typování |
|---|---|---|
| Definice typů | Během běhu programu | Během kompilace |
| Kontrola chyb typů | Během běhu programu | Během kompilace |
| Flexibilita | Vyšší | Nižší |
| Výkon | Může být nižší (kvůli kontrolám při běhu) | Obvykle vyšší (typu jsou známy předem) |
Navzdory anotacím zůstává Python dynamicky typovaným jazykem, protože kontrola typů během běhu stále probíhá, a je možné přiřadit proměnné hodnotu jiného typu, i když byla použita syntaktická anotace. Anotace slouží ke zlepšení čitelnosti kódu, usnadnění ladění a používání nástrojů pro statickou analýzu.