Comments 13
Имхо без этого можно было обойтись и теперь сложнее читать код, что как бы одна из сильных сторон Питона.
Да, для экспертов это не особо что-то поменяет, но порог входа — увеличивает.
Отчасти соглашусь, что сильные изменения могут привести к нечитабельности. Но именно описанного в переводе функционала реально нехватало. Уродливые вложенные if или необоснованные вычисления выражения до проверки условий реально портят жизнь.
Я поднял нижний порог до Python 3.6, но реально жалею, что еще там этого функционала не реализовано. Придётся ждать ещё 3-5 лет, когда Python 3.8 будет во всех актуальных ОС. Пока что картину портит CentOS 7.
А насчёт читабельности, я бы не сказал, что этот синтаксис сложночитаем. Даже скорее наоборот.
И вот у меня есть мнение (хоть и ооочень спорное), что оператор ":=" также будет относиться к классу «профессиональных» штучек. Но если обычный человек и встретится с такой конструкцией, то наверняка только при чтении кода. А когда читаешь код, то всё всегда намного понятнее. Поэтому думаю, что всё в порядке
Субъективно все, конечно… Этот пример лично мне кажется теперь переусложненным:
if self._is_special and (ans := self._check_nans(context=context)):
return ans
Спасибо. Очень полезная статья. Потребность в таком операторе давно ощущается. Хотя интуитивно кажется, что конструкция с as была бы более читабельна.
Я пишу на питоне чуть меньше года, как web, так и консольные програмки для личного пользования. Уровень моих навыков нормальный, поскольку раньше часто писал на C и немного на D. И тогда и сейчас это не слишком глубокое знание языка и поводов для углубления особо нет. Я не страдаю получением знаний ради знаний. Меня пугает то, что часто так бывает, когда разработчики языка пилят новые фичи просто потому что ну а чем ещё заниматься. Полезен морж или нет — действительно ли он необходим или есть более важные проблемы, более фундаментальные? Вроде бы остро стоит тема скорости или параллельных вычислений, может ещё что. Мне кажется, язык живёт не тогда, когда добавляются фичи, а когда им пользуются. Питонисты, сидящие на второй версии, и не думают с неё слазить, поскольку основные фишки языка там есть. Вот эта красота ":=" — не достаточный аргумент для перехода. Больше всего людям нужно исправление ошибок и уязвимостей, а потом новые фичи. Я например могу хоть каждые пол года повышать версию питона, поскольку мои проекты довольно малы. Для таких как я фичи наверное только в плюс, а вот для тех, у кого проекты тянутся годами, нужна стабильность. Иногда и раз в 10-15 лет трудно сменить версию.
Всё-таки термин «keyword arguments» я бы предложил переводить как «именованные аргументы», а не как сейчас «ключевые аргументы». С чего это они вдруг ключевые, когда они как раз таки зачастую необязательные? Зато у них есть чётко определённое имя и этим они отличаются от позиционных аргументов, для которых имя не столь важно.
Тот самый PEP, из-за которого ушёл Гвидо
if let Some(match) = pattern.search(data) {
// Do something with match
}
то же самое можно и с while. Если есть два матча
if let Some(match) = pattern1.match(data).or_else(|| pattern2.match(data)) {
// Do something with match
}
вроде и не так лаконично, но, как по мне, куда более наглядно и не требует пространных статей для разъяснения.
PEP 572 (Выражения присваивания в python 3.8)