Комментарии 11
PEP 823 (?. и ?[] синтаксис) очень классный, давно не хватало подобного
А как же Simple is better than complex и Readability counts? Кому как, но по моему (сугубо субъективному) мнению,
def get_customer_name(data: Data) -> str | None:
return data.customer?.user?.name.lower()воспринимается тяжелее, чем
def get_customer_name(data: Data) -> str | None:
customer = data.customer
if customer is not None:
user = customer.user
if user is not None:
return user.name.lower()
return NoneДа, не однострочник (надеюсь не обижу адептов Perl-а), но когнитивная сложность (кстати, спасибо за доклад) у второго варианта ниже, тк он более "вытянут" и состоит из примитивных действий.
Наоборот: во втором варианте нужно прочитать каждую строку и сложить в голове целостную картину из условий. Однострочник выглядит естественно
Моя позиция такая: длинный код надо читать и понимать. Смотреть, что он реально делает. Нет ли там лога где-то? Не спрятан ли side-effect? А одна строка сразу входит в голову: вот, мы получаем атрибут такой-то.
Обсуждали это в чате канала. Однако здесь повторю
Есть исследование на это счет. Спец.символы (& || ?? && ; =>) а так же много скобок у многих людей сильно сбивают внимание. В когнитивной психологии это называют высокой синтаксической нагрузкой или синтаксическим шумом. В сознании мы не читаем код посимвольно, мы читаем его блоками или словами. Символы вроде => или ?? разрывают плавность текста, заставляя взгляд спотыкаться. В примере выше голова от такой конструкции customer?.user?.name.lower() конечно не устанет, однако важно чтобы это не стало трендом в python.
В любом случае благодарю сообщество и Вас sobolevn за публикацию моего скромного opensource Asynctoolspy.


Находки в опенсорсе: мир питона за сентябрь 2026