ЛКПП 2: +
Вставка
- Опубліковано 14 кві 2024
- Лучший курс по питону: 2
00:00 Вступление
00:30 Junior: __add__, __radd__, __iadd__, типизация
06:36 Middle: AST и BinOp, атомарность __iadd__, грамматика и приоритет операций, модуль operators
16:11 Senior: type slots, оптимизация байткода, как работает сложение двух PyLong объектов
25:45 Ссылки
Полезные ссылки:
- Материалы: github.com/sobolevn/the-best-...
- Мой GitHub: github.com/sobolevn
- Поддержать: boosty.to/sobolevn
- Сообщество: discord.python.ru
Нужен разбор typeshed!
Просто Боженька!
Очень неожиданно!
Пока о таком глубоком подходе и не думалось даже.
Спасибо!
typeshed упоминал и Рамальо, но что это в деталях, послушала бы конечно
Спасибо за канал! Это лучшее, что видела по питону.
Ставлю два лайка!
Хотел бы разбор библиотеки typeshed!
Звук стал лучше, да? :)
да. и про typeshad тоже давай
Звук стал идеальным! Спасибо Никита!)
Разбор typeshed был бы очень уместен и приятен.
Здравый контент
Никита, спасибо за курс! Есть понимание сколько всего будет уроков и как часто они будут выходить?
Надеюсь, что где-то 50 выпусков. В среднем раз в неделю, иногда чаще, иногда реже.
1) Если после оптимизации сложения до BINARY_OP_ADD_INT мы сложим строки, то после неудачного сложения, будет вызвана BINARY_OP? Сколько раз нужно потом сложить строки, чтобы оптимизация стала BINARY_OP_ADD_UNICODE?
2) Как я понял ошибку с += для tuple, она возникает из-за того что мы после изменения списка, пытаемся присвоить "новый" список, вместо старого.
Но если посмотреть id списка до += и после, то id совпадает, что намекает что список как объект остается тем же. Т.е. проблема в том что мы не можем менять объект, даже если это тот же самый объект?
1) да, fallback в BINARY_OP предусмотрен
2) tuple не определяет *никаких* методов для мутации себя. сравнение значений даже не успевает произойти. метод не найден, ничего не вызывается :(
Никогда не пользовался typeshed
а зачем return self.__class__, если
@dataclass
class Number:
n: int
def __add__(self, other):
return self.n + other
корректен?
Они делают разное: `self.n + other` вернет чистое значение, `self.__class__(self.n + other)` вернет `Number` (или его подкласс) со значением внутри.
@@sobolevn да, поторопился спросить, спасибо
Контент классный, но со звуком беда, оч тихо.
Я сделал громче, относительно первых видосов. Нужно и дальше улучшать. Кажется, что в моем случае проще купить другой микрофон.
@@sobolevn У меня всё ок, слушаю на 20% и всё слышно