Кадом навъи типгузорӣ дар Python вуҷуд дорад: статикӣ ё динамикӣ?
sobes.tech AI
Ҷавоб аз AI
Динамикӣ, аммо бо унсурҳои статикӣ бо шароити ишораҳои намуд.
Дар типгузории динамикӣ, навъи тағйирёбанда дар вақти иҷрои барнома бар асоси арзиши таъиншуда муайян карда мешавад.
# Типгузории динамикӣ: x метавонад намудҳои гуногуни маълумотро қабул кунад
x = 10 # int
x = "салом" # str
Аз нусхаи Python 3.5, ишораҳои намудҳо (type hints) илова карда шуданд, ки имкон медиҳанд, ки намуди интизории тағйирёбанда, аргументи функсия ё арзиши баргардонидашударо нишон диҳанд. Ин Python-ро ба забони бо типҳои статикӣ дар маънои классикӣ табдил намедиҳад, аммо имкон медиҳад, ки таҳлилгарони статикии код (масалан, mypy) барои санҷиши намудҳо пеш аз иҷрои барнома истифода шаванд.
# Ишораҳои намудҳо
def greet(name: str) -> str:
return f"Салом, {name}"
синну сол: int = 30
Тавсифи асосии фарқиятҳо байни типгузории динамикӣ ва статикӣ:
| Хусусият | Типгузории динамикӣ | Типгузории статикӣ |
|---|---|---|
| Таърифи намудҳо | Дар вақти иҷрои барнома | Дар вақти компилятсия |
| Таҳқиқи хатоҳои намуд | Дар вақти иҷрои барнома | Дар вақти компилятсия |
| Латофат | Баландтар | Пасттар |
| Камбудиҳо | Мумкин аст пасттар бошад (зеро, санҷишҳо дар вақти иҷро) | Аксар вақт баландтар (намунаҳо аз пеш маълуманд) |
Бо вуҷуди ишораҳо, Python боқӣ мемонад забони бо типгузории динамикӣ, зеро санҷиши намудҳо дар вақти иҷрои барнома идома меёбад, ва имкон дорад, ки ба тағйирёбанда арзиши намудҳои дигар дода шавад, ҳатто агар ишораи синтаксӣ вуҷуд дошта бошад. Ишораҳо барои беҳтар кардани хонданпазирии коди, осонтар кардани хатоёбӣ ва истифодаи воситаҳои таҳлили статикӣ хизмат мекунанд.