Обновить
16K+
183
Никита Соболев@sobolevn

Fulltime OpenSource разработчик

48,3
Рейтинг
533
Подписчики
Отправить сообщение

вам спасибо!

Моя позиция такая: длинный код надо читать и понимать. Смотреть, что он реально делает. Нет ли там лога где-то? Не спрятан ли side-effect? А одна строка сразу входит в голову: вот, мы получаем атрибут такой-то.

++ преполагает сложную атомарную семантику, которой нет в питоне :)

Согласен, очень много кода пишется просто из-за проверки на None :(

Очень круто! Спасибо за патч и за контент! 🤝

Никаким :) Я весь код руками пишу.

Спасибо, что опубликовал!

Спасибо за вклад в статью и опенсорс!

Спасибо! Буду, конечно :)

Переделывать существующие структуры в CoW - не так просто, если мы хотим сохранить стабильный ABI.

Конечно, bytes(b) делает копию:

>>> b = bytearray(b'123')
>>> b2 = bytes(b)
>>> b.append(int.from_bytes(b'4'))
>>> b
bytearray(b'1234')
>>> b2
b'123'

Если данные большие - мы так делать не хотим :)

с # не выйдет :(

Потому что сейчас `#{1, 2}` - валидный комментарий.

Да, что-то в таком духе :)

Нет, как раз сам объект и изменяется:

>>> b = bytearray(b'123')
>>> b
bytearray(b'123')
>>> b.take_bytes()
b'123'
>>> b
bytearray(b'')

Потому что они не делают freeze :) Они забирают данные из готовых мутабельных структур и создают новые иммутабельные.

К сожалению, f[1] - валидный синтаксис сейчас. Потому я и предлагал $. Но, люди отказались по причине (я не шучу): "мы не хотим $ как в php". Вот так программисты принимают технические решения 🌚️️

Мешает :(

Сейчас, мы не знаем, что такое Final в момент компиляции. Final может быть ваш собственный класс.

  1. Аннотации могут быть ленивыми

  2. Они могут быть строками

  3. Они могут быть вообще не определены в рантайме в форме: if TYPE_CHECKING: from typing import Final

Как такое нормально превратить во что-то адекватное на шаге symtable? Я не знаю. И никто не знает :(

Да и проблему оно описанную в посте не решит; `d: Final = {1: 2}` все еще поддерживает (по текущей typing spec) все действия над dict, в том числе `d[3] = 4`.

А еще их можно будет дешево шарить в субинтерпретаторах, да :)

Информация

В рейтинге
154-й
Зарегистрирован
Активность

Специализация

Бэкенд разработчик, Фулстек разработчик
Ведущий
Python
Django