Вопрос-Ответ

What is the formal difference between "print" and "return"? [duplicate]

В чем формальная разница между "print" и "return"?

Допустим, я определяю простую функцию, которая будет отображать переданное ей целое число:

def funct1(param1):
print(param1)
return(param1)

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

Переведено автоматически
Ответ 1

Совершенно разные вещи. Представьте, что у меня есть эта программа на python:

#!/usr/bin/env python

def printAndReturnNothing():
x = "hello"
print(x)

def printAndReturn():
x = "hello"
print(x)
return x

def main():
ret = printAndReturn()
other = printAndReturnNothing()

print("ret is: %s" % ret)
print("other is: %s" % other)

if __name__ == "__main__":
main()

Каким вы ожидаете быть результатом?

hello
hello
ret is : hello
other is: None

Почему?

Почему? Потому что print принимает его аргументы / выражения и выводит их в стандартный вывод, поэтому в функциях, которые я создал, print будет выводить значение x, которое является hello.


  • printAndReturn вернет x вызывающему методу, поэтому:


    ret = printAndReturn()


ret будет иметь то же значение, что и x, т.е. "hello"


  • printAndReturnNothing ничего не возвращает, поэтому:


    other = printAndReturnNothing()


other на самом деле становится None, потому что это возврат по умолчанию из функции python. Функции Python всегда что-то возвращают, но если не объявлено return, функция вернет None.


Ресурсы

Изучение руководства по python познакомит вас с этими понятиями: http://docs.python.org/tutorial

Вот кое-что о функциях из руководства по python: http://docs.python.org/tutorial/controlflow.html#defining-functions


Этот пример, как обычно, демонстрирует некоторые новые возможности Python:


Оператор return возвращает значение из функции. return без аргумента выражения возвращает None . Завершение функции также возвращает None.


Ответ 2

С помощью print() вы выведете на стандартный вывод значение param1, в то время как с помощью return вы отправите param1 вызывающему.

Эти два оператора имеют совершенно разное значение, и вы не должны видеть одинаковое поведение. Опубликуйте всю вашу программу, и вам будет легче указать на разницу.

Редактировать: как указывали другие, если вы находитесь в интерактивной оболочке python, вы видите тот же эффект (печатается значение), но это происходит потому, что оболочка вычисляет выражения и печатает их выходные данные.

В этом случае функция с return оператором вычисляется как параметр return самой себя, поэтому возвращаемое значение передается обратно. Не позволяйте интерактивной оболочке обмануть вас! :)

Ответ 3

Простой пример, показывающий разницу:

def foo():
print (5)

def bar():
return 7

x = foo()
y = bar()

print (x)
# will show "None" because foo() does not return a value
print (y)
# will show "7" because "7" was output from the bar() function by the return statement.
Ответ 4

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

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

return - это основной способ, которым функция возвращает значение. Все функции будут возвращать значение, и если нет оператора return (или yield, но пока не беспокойтесь об этом), он вернет None . Значение, возвращаемое функцией, затем может быть дополнительно использовано в качестве аргумента, переданного другой функции, сохранено как переменная или просто напечатано в интересах пользователя-человека.

Рассмотрим эти две программы:

def function_that_prints():
print "I printed"

def function_that_returns():
return "I returned"

f1 = function_that_prints()
f2 = function_that_returns()
print "Now let us see what the values of f1 and f2 are"
print f1
print f2
2024-01-01 03:58 python