Print vs Return in Python
First thing to note is that, return and print are statements, not functions.
Basic Explanation
Print only shows the human user a string representing what is going on inside the computer. Though the computer cannot make use of that printing that is why return is a function that gives back a value. With this value it is often unseen by the human user but it can be used by the computer in further functions
Expansive Explanation
Print is like a console.log version of JavaScript. It is mainly for the user to see how it works. It is very useful to understand how a program works and where you can start debugging to check various values in a program without interrupting the program.
return is the main way that helps a function return a value. All functions will return a value, and if there is no return statement (or yield ), it will return None . The value that is returned by a function can then be further used as an argument passed to another function, stored as a variable, or just printed for the benefit of the human user.
Consider these two programs:
The following is what will be seen in the console:
When function_prints ran, it automatically printed to the console "I printed" . However, the value stored in f1 is None because that function had no return statement.
When function_returns ran, it did not print anything to the console. However, it did return a value, and that value was stored in f2 . When we printed f2 at the end of the code, we saw "I returned"
Now let us try another example:
In this example, we pass the results of a function to another function. Let us see what the console will say
Notice that we got an error when we tried to pass f1 to add_three because f1 had a value of None , even though it had printed out the correct number. This is why it is important to return values and not print them (except when we want to know what the value is).
Лекция 5. «Анализ решений задач»
Это решение правильное, но его можно упростить. Рассмотрим выражение внутри if :
Значением этого выражения может быть либо True , либо False . Т.е. если, например, мы присвоим это выражение переменной, то в ней будет лежать или True , или False .
Что мы сделали — значение выражения положили в переменную, внутрь if положили переменную. Это эквивалентное преобразование. Рассмотрим теперь условный оператор:
Когда в переменной res лежит True , будет выполнена первая ветка if , т.е. выполнен оператор return True . Когда в переменной res лежит False , будет выполнена вторая ветка — оператор return False .
Всю вот эту конструкцию можно заменить эквивалентной:
Действительно, когда в res лежит True , выполнится return True , а когда лежит False — return False .
Значит, функцию можно упростить таким образом:
Переменная res используется один раз в return , значит её можно заменить на выражение, ей присвоенное:
Отличия print и return
Ранее мы писали два вида функций: функции, которые печатали требуемые значения при помощи print , и функции, которые возвращали значения при помощи return .
Пример. Функции hypot1(a, b) и hypot2(a, b) , которые вычисляют гипотенузу прямоугольного треугольника:
Выглядят они похоже. Первая функция печатает значение при помощи вызова функции print , результат печатается в консоль. Вторая функция возвращает значение при помощи оператора return .
Если попытаемся их вызвать, то, на первый взгляд, отличий не увидим:
В обоих случаях на консоль напечаталось значение гипотенузы. Но механизм печати разный. Попробуем найти отличие.
Переменным h1 и h2 были присвоены значения, которые эти две функции возвращают. Функция hypot1 явным образом ничего не возвращает, т.к. в ней отсутсвует оператор return . Если оператор return отсуствует, то в конце функции неявно подразумевается оператор return None . Т.е. функция hypot1 неявно выглядит так:
Функция hypot1(a, b) что делает:
- Вычисляет гипотенузу, кладёт её в переменную c .
- Вызывает функцию print(c) , которая печатает значение c в консоли.
- Завершает свою работу с возвратом значения None .
Среда IDLE после вычисления выражения hypot1(5, 12) видит, что результат выражения — None и его не печатает. Поэтому мы видим только результат печати функции print :
Вообще, среда IDLE в консоли никогда не печатает None :
Среда IDLE тут не распечатала None ни когда мы его явно ввели, ни когда мы попытались распечатать значение переменной x . Другие значения в этих случаях будут печататься:
Значения False и 3.1415926 , в отличие от None , печатаются как ожидалось.
Чтобы увидеть значение None в консоли, нужно его распечатать функцией print :
Поэтому в примере выше мы писали не
Соответственно, в примере
мы видим, функция hypot1 напечатала значение, а возвращаемое значение (т.е. результат вызова) — это None , лежит в переменной h1 .
Функция hypot2(a, b) возвращает величину гипотенузы как свой результат:
При вызове в консоли hypot2(5, 12) :
- Функция hypot2 вычисляет гипотенузу по теореме Пифагора, кладёт её в переменную c .
- Возвращает значение переменной c как свой результат.
- Среда IDLE видит, значение выражения 13.0 , т.е. оно не равно None , и его печатает.
Во втором примере (с присваиванием) возвращаемое значение кладётся в переменную h2 , а для присваиваний среда IDLE ничего не печатает. Вызов print(h2) просто распечатывает значение переменной.
Заметим, что функция print(…) тоже возвращает None :
Ещё пример:
Здесь функция сначала напечатала первую строку, потом вернула вторую. Среда IDLE увидела, что функция вернула не None , и напечатала результат работы функции (т.е. вторую строку). Возвращаемое значение печатается в машиночитаемой форме, т.е. для строк — в кавычках.
Третья строчка не напечаталась, т.к. return завершает выполнение функции. Вызов print — не завершает работу функции, это просто вызов другой функции.
Возвращаемое значение можно увидеть отдельно, если его присвоить переменной:
Возвращаемое значение было присвоено переменной z . В ответ на присваивание сама среда IDLE ничего не печатает, мы видим только то, что печатает функция при помощи print .
Возвращённое значение можно использовать в вычислениях:
Напечатанное значение уже использовать нельзя, его можно только смотреть глазами:
Вызов функции hypot1 напечатал 13.0 , затем вернул None . Мы попытались сложить 7 (типа int ) и None (типа NoneType ) и получили это сообщение об ошибке: нельзя использовать + для int и NoneType .
Print vs. return in Python
Printing and returning are completely different concepts.
print is a function you call. Calling print will immediately make your program write out text for you to see. Use print when you want to show a value to a human.
return is a keyword. When a return statement is reached, Python will stop the execution of the current function, sending a value out to where the function was called. Use return when you want to send a value from one point in your code to another.
Using return changes the flow of the program. Using print does not.
Improve your Python skills fast
The fastest way to learn programming is with lots of practice. Learn a programming concept, then write code to test your understanding and make it stick. Try our online interactive Python course today—it’s free!
чем отличается return от print() в python [закрыт]
Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение.
Закрыт 3 года назад .
Объясните пожалуйста чем отличается return от print() в python
Возвращает значение из функции.Пример:
Выводит на экран:
return значит что функция что-то возвращает. Это что-то можно потом передавать в другую функцию, или иным образом взаимодействовать. print просто что-то печатает, при этом функция будет возвращать None . В дальнейшем вы с этим значением никак работать не сможете. Также после выполнения инструкции return дальнейший код функции не читается, она всегда заканчивается return
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.20.43331
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.