Python Basics
Какой Python язык?
- Динамическая типизация, но можно статическую типизацию сделать с помощью mypy
- Мультипарадигмальный, общего назначения с верхнеуровневым и низкоуровневым апи
- Компилируемый - компилируется в байт-код -
.pyc
- Интерпретируемость - это ложь
Типы данных
- mutuble:
list
, set
, dict
- immutable:
tuple
, int
, str
==
vs is
==
- по значению / по методу __eq__
is
- по адресу в памяти: id(a) == id(b)
Immutable
Что будет при изменении строки/тьюпла по индексу
В чем плюс иммутабельных типов
- Быстрее
- Меньше памяти жрут
- Хешируемы - можно использовать в словарях/сетах
Как сделать класс - хешируемым
- Реализовать
__hash__
, __eq__
copy
copy
- не дип копирование
deepcopy
- дип-копирование, включая списки и дикты
Exceptions / Эксепшены / Ошибки
BaseException
vs Exception
BaseException
- для builtin-ошибок, в целом не должны использоваться в коде
Exception
- базовый класс для ошибок, ловить/пользоваться нужно ими
Декораторы
- Декоратор с параметрами - Просто еще один слой враппинга
Итераторы / генераторы / итерируемый объект
- Итератор:
__iter__
, __next__
- Генератор - объект, лениво отдающий свои данные
- Итерируемый объект - то что в for можно сунуть
Стандартная библиотека
- std: collections / itertools / etc.
Материалы