Возвращение простого значения в функциях Python

Есть ли разница в выводе простого значения функции между этими первой и второй реализациями? Для чего создавать переменную как в первом случае, если можно это все сократить?

def get_formatted_name(first_name, last_name):
    full_name = f"{first_name} {last_name}"
    return full_name.title()
musician = get_formatted_name('jimi', 'hendrix')
print(musician)


def get_formatted_name(first_name, last_name):
    full_name = (f"{first_name} {last_name}")
    print(full_name.title())

get_formatted_name('jimi', 'hendrix')

Ответы (1 шт):

Автор решения: CrazyElf

Если вы ничего не планируете больше делать с результатом, который считает и возвращает функция, то разницы нет. Но вообще возвращать результат из функции, а не печатать его внутри - лучше сразу по нескольким параметрам:

  • функцию, возвращающую значение, проще покрыть тестами
  • если вы захотите потом значение не печатать, а выводить в файл, или передавать в другую функцию - у вас есть почти готовое решение, берёте результат функции и делаете с ним что хотите; а вот функцию, которая результат печатает, вам придётся переделывать
  • в развитие предыдущего пункта - такие функции можно объединять в библиотеки, составлять их них как из кубиков программы, вы можете написать модуль с нужными функциями и далее подключать его в свои программы и вызывать нужные функции из него

Ну, всё это помимо того, что функция вообще-то у вас называется get_formatted_name, что предполагает, что она возвращает некое formatted_name, а если вы хотите что-то печатать в этой функции, то и называть её надо было соответственно.

→ Ссылка