Про return без значения
Что вернёт функция, если в конце не написать return? Я думал, что ничего, но когда я сохраняю результат вызова такой функции в переменную, в ней оказывается None (или undefined в JS). Получается, функция всё-таки что-то возвращает? Зачем так сделано?
1 ответ
Функция возвращает None всегда, когда до return дело не дошло или он пустой. Это не «ничего» — это конкретный объект-заглушка со смыслом «значения нет».
Сделано так, чтобы вызов функции всегда был выражением с результатом. Иначе x = f() для функции без return был бы ошибкой, и функции пришлось бы делить на два сорта, как в Паскале с его procedure и function. В JS логика та же, только заглушка называется undefined.
Кстати, самый частый способ наступить на это — print: x = print('привет') кладёт в x None, потому что print печатает, а не возвращает.