Skip to content

Python Basics

Какой Python язык?

  • Динамическая типизация, но можно статическую типизацию сделать с помощью mypy
  • Мультипарадигмальный, общего назначения с верхнеуровневым и низкоуровневым апи
  • Компилируемый - компилируется в байт-код - .pyc
    • Интерпретируемость - это ложь

Типы данных

  • mutuble: list, set, dict
  • immutable: tuple, int, str
  • == vs is
    • == - по значению / по методу __eq__
    • is - по адресу в памяти: id(a) == id(b)

Immutable

Что будет при изменении строки/тьюпла по индексу

  • Ошибка TypeError

В чем плюс иммутабельных типов

  • Быстрее
  • Меньше памяти жрут
  • Хешируемы - можно использовать в словарях/сетах

Как сделать класс - хешируемым

  • Реализовать __hash__, __eq__

copy

  • copy - не дип копирование
  • deepcopy - дип-копирование, включая списки и дикты

Exceptions / Эксепшены / Ошибки

BaseException vs Exception

  • BaseException - для builtin-ошибок, в целом не должны использоваться в коде
  • Exception - базовый класс для ошибок, ловить/пользоваться нужно ими

Декораторы

  • Декоратор с параметрами - Просто еще один слой враппинга

Итераторы / генераторы / итерируемый объект

  • Итератор: __iter__, __next__
  • Генератор - объект, лениво отдающий свои данные
  • Итерируемый объект - то что в for можно сунуть

Стандартная библиотека

  • std: collections / itertools / etc.

Материалы