Milyen típusú típusosítás van Pythonban: statikus vagy dinamikus?
sobes.tech MI
Válasz az MI-től
Dinamikus, de típusmegjelölésekkel statikus elemekkel.
Dinamikus típusozás esetén a változó típusa a hozzárendelt érték alapján kerül meghatározásra a program futtatása során.
# Dinamikus típusozás: x különböző adattípusokat vehet fel
x = 10 # int
x = "szia" # str
A Python 3.5-ös verziójától kezdve típusmegjelöléseket (type hints) adtak hozzá, amelyek lehetővé teszik a változó, függvényargumentum vagy visszatérési érték várt típusának megadását. Ez nem teszi a Pythont klasszikus értelemben vett statikusan típusos nyelvvé, de lehetővé teszi statikus kódelemzők (pl. mypy) használatát a típusok ellenőrzésére a program futtatása előtt.
# Típusmegjelölések
def greet(name: str) -> str:
return f"Szia, {name}"
kor: int = 30
A dinamikus és statikus típusozás közötti fő különbségek:
| Jellemző | Dinamikus típusozás | Statikus típusozás |
|---|---|---|
| Típusdefiníció | A futás során | A fordítás során |
| Hibák ellenőrzése | A futás során | A fordítás során |
| Rugalmasság | Magasabb | Alacsonyabb |
| Teljesítmény | Lehet alacsonyabb (a ellenőrzések miatt futás közben) | Általában magasabb (a típusok előre ismertek) |
A típusmegjelölések ellenére a Python továbbra is dinamikus típusú nyelv marad, mivel a típusellenőrzés futás közben továbbra is megtörténik, és egy változónak más típusú értéket is lehet adni, még akkor is, ha szintaktikai megjelölés volt. A megjelölések a kód olvashatóságának javítására, a hibakeresés megkönnyítésére és statikus elemző eszközök használatára szolgálnak.