sobolevn

Пикабушник
Дата рождения: 5 марта
в топе авторов на 669 месте
353 рейтинг 41 подписчик 0 подписок 20 постов 1 в горячем
163

Бесплатный курс по Python для Junior / Middle / Senior разработчиков

Привет! Меня зовут Никита Соболев, я занимаюсь опенсорсом. Я основной разработчик многих популярных технологий: CPython, mypy, typeshed, hypothesis, dry-python, wemake-python-styleguide, TypedDjango, и тд: https://github.com/sobolevn

Недавно я начал делать бесплатный курс на YouTube для не-новичков. Потому что совсем новичкового контента уже довольно много, а вот что делать, если ты хочешь вырасти из джуна в мидла или из мидла в сениора? Тут-то мой курс вам и поможет :)

Я делаю короткие видео (около 20 минут) по одной узкой теме на трех уровнях сложности, например – про тип "int":

- На уровне "junior" мы повторяем все магические методы, которые могут превратить объект в `int`: `__int__`, `__index__`, `__trunc__`, `__ceil__`, `__floor__`. Вспоминаем про формы записи чисел через `0x`, `0o`, `0b`

- На уровне "middle" знакомимся с Numeric Tower и `numbers.py`

- А на уровне "senior" знакомимся с C-шной реализацией `longobject.c`, говорим про пределы значение `int`, C-API `PyLong_*`, ну и конечно про оптимизации байткода

На канале уже 5 видео про базовые вещи в CPython, всего планируется около 50 видосов.

Надеюсь, что вам будет полезно и интересно.

P.S. К 5му видео я успешно разобрался с тем, как правильно нужно записывать звук!

Показать полностью 1
2

Быстрая замена mypy на Rust'е: pyrefly

Еще одно видео про еще один новый тайпчекер для питона на расте!

Много их нынче стало.

В видео:

- Обсуждаем первую версию: pyre-check, обсудили taint analysis

- Сравниваем pyrefly с ty и mypy

- Смотрим на внутреннее устройство

- Применяем на реальном проекте

Ключевые ссылки из выпуска:

– Доклад о pyrefly на PyCon: https://youtu.be/ZTSZ1OCUaeQ?si=s_DPOOzsdeTk5Uqo

– pyrefly vs ty: https://blog.edward-li.com/tech/comparing-pyrefly-vs-ty (сильно советую!)

Вывод: пока очень сырой, много багов, но быстрый. Ключевой вывод: отлично, что есть конкуренция.

Показать полностью
9

Почему в CPython tuple на самом деле мутабельный? И чем он реально отличается от list?

Что внутри?

Для джунов:

- В чем разница между tuple и list?
- Аннотации tuple
- Тип произведение
- TypeVarTuple, PEP646, Unpack

Для мидлов:

- ast.Tuple
- tuple_iterator
- collections.abc
- collections.namedtuple
- typing.NamedTuple

Для сениоров:

- PyTupleObject
- PyVarObject
- tp_alloc, tp_dealloc, freelists
- __len__
- __hash__
- Мутабельность tuple
- PyTuple_Pack, Py_BuildValue
- Виртуальная машина и компилятор: BUILD_TUPLE
- INSTRICT_LIST_TO_TUPLE
- Оптимизации компилятора
- PySequenceTuple

Показать полностью
12

Как работает bytearray в CPython?

  • Разница между `bytes` и `bytearray` в Python

  • Изменение bytearray

  • Зачем нужен bytearray в Python?

  • collections.abc.MutableSequence и typing.MutableSequence

  • Buffer protocol, магические методы `__buffer__` и `__release_buffer__`

  • bytearray_iterator

  • Устройство PyByteArrayObject на C

  • stringlib

  • bytearray.__alloc__

  • PyByteArray_Resize и PyByteArray_AS_STRING

  • Разные аллокаторы в CPython: PyMem_Malloc и PyMem_Realloc

  • C pointer math

  • PyBuffer_FillInfo

14

Как работают сравнения в CPython?

В видео говорим про:

- Разницу байткода и перформанса между a == b == c и a == b and b == c

- Различия is и ==

- Работу с NotImplemented

- Старые сравнения в Python2 и усиление типизации в Python3

- Оптимизация байткода в Tier1: COMPARE_OP превращается в COMPARE_OP_{INT,STR,FLOAT}

- PyObject_RichCompare C-API

- Дефолтную реализацию object.__eq__, object.__lt__ и других

Показать полностью 1
Отличная работа, все прочитано!