Что лучше всего вернуть результат и распечатать его в конце функции?

Предположим, что мы определяем функцию, а затем завершаем ее:

def function(): # ... return result # To see the result, we need to type: print(function()) 

Другим вариантом является завершение функции print :

 def function(): # ... print(result) # no need of print at the call anymore so function() 

Вопрос: Можно ли закончить функцию с помощью оператора return , получить его через function() или нет?
Я имею в виду, что мне все равно, сохраняет ли функция результат или нет. Однако функция может иметь несколько разных результатов, т. Е. Мне нужно в какой-то момент выйти из цикла. Основная идея – получить выход на экране.
Итак, скажите, пожалуйста, мой вариант в порядке или это не «элегантное» кодирование. Благодаря!

Самый чистый способ – с помощью оператора return . В общем случае функция возвращает результат, и этот результат может быть обработан другим алгоритмом. Возможно, вам не нужно получать результат в переменной в вашем случае, но представьте, что вы делаете это через 1 неделю, месяц …

Лучше всего делегировать print в самой основной программе. Вы будете легче управлять данными в своей программе и, как я уже сказал, вы можете связать функции.

Представьте себе две функции a(arg) и b(arg) которые возвращают два вычисления. С оператором print в функции b вы не сможете это сделать:

 a(b(10)) 

потому что a получит значение None в аргументе (потому что функции возвращают None по умолчанию, что в случае с заявлением print в конце).

TL; DR : Следуйте этому шаблону большую часть времени:

 def get_full_name(arg1, arg2, ...): # Do cool stuff return res # <- result of the function print get_full_name('foo', 'bar') full_name = get_full_name('Maxime', 'Lorant') print some_other_function(full_name) # etc. 

Если вы return print(result) , вы по существу делаете return None потому что print() возвращает None . Так что это не имеет большого смысла.

Я бы сказал, что гораздо чище return result и вызывающий абонент решает, нужно ли print() или делать что-то еще с ним.

Функция print ничего не вернет; он будет печатать только материал в качестве вывода на консоль. Поэтому возврат возвращаемого значения из функции print не имеет особого смысла. Вы ничего не возвращаете по определению.

Поэтому, если вы не хотите закончить функцию раньше, нет причин, по которым вы должны использовать return в этом случае. Просто распечатать результат (без использования return ) отлично и намного понятнее.

Кроме того, если вы хотите вернуть фактический контент, print функцией печати, тогда вы должны просто сделать это и оставить его вызывающему, чтобы решить, печатать его или нет.

Если вы хотите использовать print(function()) (который для меня звучит наиболее разумно здесь), просто верните результат из функции:

 def function (): # ... return result 

Если вы только заботитесь о его печати, вы должны просто сделать:

print(result)

в конце функции, но обычно, если вы пытаетесь использовать результат, просто верните его, а затем вы можете использовать результат и распечатать его

вы, вероятно, не должны делать return print(result) просто выполните или распечатайте ее вне функции

если вы используете return print(result) вы ничего не возвращаете, поэтому ее бессмысленно

Нет, вы не можете. Когда вы вызываете функцию, возвращается значение print () (а не значение результата)

У вас может быть аргумент ключевого слова, который будет переключателем того, не хотите ли вы распечатать результат перед возвратом из вашей функции:

 def func(arg1, arg2,verbose=True): # do cool stuff # 'result' is what it all produced if verbose: print result return result 

Затем просто вызовите func(arg1,arg2,...,verbose=False) чтобы отключить его.