Моя позиция такая: длинный код надо читать и понимать. Смотреть, что он реально делает. Нет ли там лога где-то? Не спрятан ли side-effect? А одна строка сразу входит в голову: вот, мы получаем атрибут такой-то.
К сожалению, f[1] - валидный синтаксис сейчас. Потому я и предлагал $. Но, люди отказались по причине (я не шучу): "мы не хотим $ как в php". Вот так программисты принимают технические решения 🌚️️
Сейчас, мы не знаем, что такое Final в момент компиляции. Final может быть ваш собственный класс.
Аннотации могут быть ленивыми
Они могут быть строками
Они могут быть вообще не определены в рантайме в форме: if TYPE_CHECKING: from typing import Final
Как такое нормально превратить во что-то адекватное на шаге symtable? Я не знаю. И никто не знает :(
Да и проблему оно описанную в посте не решит; `d: Final = {1: 2}` все еще поддерживает (по текущей typing spec) все действия над dict, в том числе `d[3] = 4`.
Копирую ссылки из чата:
https://web.eecs.umich.edu/~weimerw//p/weimer-tse2010-readability-preprint.pdf
https://www.sciencedirect.com/science/chapter/bookseries/abs/pii/B9780123876911000028
вам спасибо!
Моя позиция такая: длинный код надо читать и понимать. Смотреть, что он реально делает. Нет ли там лога где-то? Не спрятан ли side-effect? А одна строка сразу входит в голову: вот, мы получаем атрибут такой-то.
++преполагает сложную атомарную семантику, которой нет в питоне :)Согласен, очень много кода пишется просто из-за проверки на
None:(Очень круто! Спасибо за патч и за контент! 🤝
Никаким :) Я весь код руками пишу.
Спасибо, что опубликовал!
Спасибо за вклад в статью и опенсорс!
Спасибо! Буду, конечно :)
Переделывать существующие структуры в CoW - не так просто, если мы хотим сохранить стабильный ABI.
Конечно,
bytes(b)делает копию:Если данные большие - мы так делать не хотим :)
с
#не выйдет :(Потому что сейчас `#{1, 2}` - валидный комментарий.
Да, что-то в таком духе :)
Нет, как раз сам объект и изменяется:
а я тебя тегать хотел в чате :)
Потому что они не делают
freeze:) Они забирают данные из готовых мутабельных структур и создают новые иммутабельные.К сожалению,
f[1]- валидный синтаксис сейчас. Потому я и предлагал$. Но, люди отказались по причине (я не шучу): "мы не хотим $ как в php". Вот так программисты принимают технические решения 🌚️️Мешает :(
Сейчас, мы не знаем, что такое
Finalв момент компиляции.Finalможет быть ваш собственный класс.Аннотации могут быть ленивыми
Они могут быть строками
Они могут быть вообще не определены в рантайме в форме:
if TYPE_CHECKING: from typing import FinalКак такое нормально превратить во что-то адекватное на шаге symtable? Я не знаю. И никто не знает :(
Да и проблему оно описанную в посте не решит; `d: Final = {1: 2}` все еще поддерживает (по текущей typing spec) все действия над
dict, в том числе `d[3] = 4`.А еще их можно будет дешево шарить в субинтерпретаторах, да :)