Мазмунга өтүү

Тип белгилери жана статикалык типтештирүү

Сабактын башталышы

Тип белгилери жана статикалык типтештирүү

Кодду текшергич курал ката класстарын программаны иштетүүдөн мурда табышы үчүн аннотация коюңуз

Негизги идея: Python иштөө учурунда динамикалык типтеш бойдон калат, бирок тип белгилери функцияларыңыз жана өзгөрмөлөрүңүз кайсы типтерди сактоо керектигин сүрөттөөгө мүмкүндүк берет. mypy сыяктуу өзүнчө статикалык анализатор ошол белгилерди окуп, дал келбестиктерди программаңызды иштетпестен билдирет. Сиз Python'дун ийкемдүүлүгүн сактап, чоң код базаларына масштабдалуучу компилятор деңгээлиндеги коопсуздук торун аласыз.
Аягында сиз мунуларды жасай аласыз:
  • функция жана өзгөрмө аннотацияларын заманбап 3.11+ синтаксиси менен жазуу (list[int], X | None),
  • typing модулунан керектүү куралды тандоо (Optional, Callable, Literal, TypedDict, Protocol...),
  • mypy иштетүү жана анын каталарын окуу,
  • TypeVar менен жалпыланган код жана Protocol менен структуралык интерфейстерди жазуу,
  • акырындык менен типтештирүүнүн чынчыл сооданы жана белгилер кайсы жерде жардам бербей калаарын түшүндүрүү.

1. Белги — бул метадайын, иштөө учурундагы текшерүү эмес

Тип белгилери жөнүндөгү эң маанилүү факт: CPython аларды текшербейт. Аннотация метадайын катары сакталат жана программа иштеп жатканда башка учурларда эске алынбайт. Чыныгы маани белгиге дал келбегени үчүн эч нерсе ката чыгарбайт.

def double(n: int) -> int:
    return n * 2

print(double("ab"))        # иштейт: abab деп басып чыгарат
print(double.__annotations__)
# {'n': <class 'int'>, 'return': <class 'int'>}

Белги int дегенде str берүү ката чыгарбайт; "ab" * 2 — туура Python, ошондуктан abab басылат. Белги сунуштама мүнөзүндө. Ал статикалык анализатор аны код иштетилерден мурда окуп: «4-сап int типтүү параметрге str берип жатат» дегенде гана баалуу болот. Бул бөлүнүү — жазуу учурунда аннотациялар, өзүнчө кадам катары текшерүү, иштөө учурунда кадимки динамикалык жүрүм-турум — бүт модель ушул. Аннотациялар __annotations__ ичинде жашайт жана интерпретатордун өзү эмес, куралдар (mypy, pyright, IDE, pydantic, dataclasses) тарабынан колдонулат.

Бул сабакты YourAIZone платформасында улантыңыз

Толук сабакта — толук түшүндүрмө, чыгарылган мисалдар, көп кездешкен каталар, заматта текшерилүүчү тесттер жана ЖИ-репетитор. Конок катары дароо баштаңыз же прогрессти сактоо үчүн аккаунт түзүңүз.

Толук сабакта

  • Толук түшүндүрмө
  • Чыгарылган мисалдар
  • Көп кездешкен каталар жана алардан кантип качуу керек
  • Тест суроолору: 15
  • Тема боюнча суроолорго жооп берген ЖИ-репетитор
  • Окуучу, ата-эне жана мугалим үчүн прогрессти көзөмөлдөө