Вернуть значение вызывающему коду
Return завершает текущий вызов функции и передаёт результат туда, где функция была вызвана. Это не то же самое, что print: возвращённую строку можно сохранить, соединить с другой или вывести позже.
Задание источника
Функция truncate принимает строку и количество сохраняемых символов. Она должна вернуть выбранный префикс с добавленными тремя точками:
def truncate(text, length):
result = f"{text[:length]}..."
return result
Проверка примеров
print(truncate("hexlet", 2)) # he...
print(truncate("it works!", 4)) # it w...
Срез начинается с начала и не включает индекс length. Вторая строка сохраняет пробел внутри префикса: первые четыре символа — i, t, пробел, w.
Не менять условие незаметно
В исходном решении троеточие добавляется всегда. Поэтому truncate("hi", 10) возвращает "hi...", а не "hi". Убирать точки для короткого текста было бы дополнительной функцией, не заданной этим упражнением.
При length=0 результат равен "...". Отрицательные значения наследуют обычную семантику среза, но не являются естественным «количеством символов»; для производственной функции договор об их обработке нужно задать отдельно.
После return
Обычные инструкции тела после безусловно выполненного return не исполняются. Поэтому сначала выполняют нужные вычисления, затем возвращают результат. Вместо двух строк можно сразу написать return text[:length] + "..."; оба варианта возвращают одинаковое значение.
В уроке исходная строка остаётся неизменной. Возвращённый результат не заменяет автоматически аргумент у вызывающего кода: для сохранения нужно явное присваивание.
Hexlet / Code Basics и участники · Исходный урок и решение · GNU AGPL v3. Семантика упражнения сохранена; граничные случаи отмечены.