Эллипсисы Rust'а
Некоторые вещи настолько глубоко фундаментально правильные, что после того, как один раз попробуешь, дальше становится не понятно, почему у всех остальных не так.
Например, в Rust последнее выражение (без ';') - это возвращемое значение функции.
fn foo() -> i32{
2
}
возвращает 2.
Почему не так же в питоне? Нет ни одной причины, почему последнее значение не может быть возвращемым. Наоборот, модель питона "нет return - возвращем None" звучит очень странно и произвольно.
Ленивое "не печатать return в конце функции" очень трудно изжить, потому что оно очевидно, удобно и кратко.
Например, в Rust последнее выражение (без ';') - это возвращемое значение функции.
fn foo() -> i32{
2
}
возвращает 2.
Почему не так же в питоне? Нет ни одной причины, почему последнее значение не может быть возвращемым. Наоборот, модель питона "нет return - возвращем None" звучит очень странно и произвольно.
Ленивое "не печатать return в конце функции" очень трудно изжить, потому что оно очевидно, удобно и кратко.

no subject
В Скале, слава те господи, то же самое.
no subject
До них двоих — в Перле и Лиспе. Как минимум. В последнем так вообще нет способа вернуть что-то из функции, кроме как устроив, чтоб оно было значением последней формы в теле
defun’а.Другое дело, что непонятно, почему из нескольких возможных
return’ов последний должен быть особенным.no subject
Потому что удобно. return в середине функции нарушает нормальное выполнение (так же как break/continue), а значение в конце появляется там "обычным" образом. Т.е. чуть-чуть пописав на расте я постоянно так же делаю (пытаюсь делать) в питоне, просто потому что оно выразительно и кратко.