Sobes.tech
Junior

Koji tip tipizacije postoji u Pythonu: statički ili dinamički?

sobes.tech АИ

Одговор од АИ

Динамички, али са елементима статичног типизације захваљујући анотацијама типова.

У динамичкој типизацији, тип променљиве се одређује током извршавања програма на основу додељене вредности.

# Динамичка типизација: x може прихватити различите типове података
x = 10  # int
x = "здраво" # str

Од верзије Python 3.5, додате су анотације типова (type hints), које омогућавају да се наведe очекивани тип променљиве, аргумента функције или вредности која се враћа. Ово не чини Python статички типизираним језиком у класичном смислу, али омогућава коришћење статичких анализатора кода (нпр. mypy) за проверу типова пре извршавања програма.

# Анотације типова
def greet(name: str) -> str:
    return f"Здраво, {name}"

старост: int = 30

Главне разлике између динамичке и статичке типизације:

Карактеристика Динамичка типизација Статичка типизација
Дефиниција типова Током извршавања Током компилације
Провера грешака Током извршавања Током компилације
Флексибилност Виша Нижа
Перформансе Може бити нижа (због провера током извршавања) Обично виша (типови су познати унапред)

Упркос анотацијама, Python остаје језик са динамичком типизацијом, јер провера типова током извршавања и даље се одвија, и могу се доделити променљивој вредности другог типа, чак и ако је постојала синтаксичка анотација. Анотације служе за побољшање читљивости кода, олакшавање дебаговања и коришћење алата за статичку анализу.