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

What is the purpose of the return statement? How is it different from printing?

Какова цель оператора return? Чем он отличается от печати?

Что делает оператор return? Как его следует использовать в Python?

Чем return отличается от print?


Смотрите также

Часто люди пытаются использовать print в цикле внутри функции, чтобы видеть несколько значений, и хотят иметь возможность использовать результаты извне. Их нужно вернуть, но return функция завершает работу при первом запуске. Смотрите, Как я могу использовать `return`, чтобы вернуть несколько значений из цикла? Могу ли я поместить их в список?.

Часто новички пишут функцию, которая в конечном итоге printвыдает что-то, а не returnвводит это, а затем также пытаются получить print результат, что приводит к неожиданному None результату. Смотрите, почему после вывода моей функции выводится "None"?.

Иногда в 3.x люди пытаются присвоить результат print имени или использовать его в другом выражении, например input(print('prompt:')). В 3.x, print это функция, так что это не синтаксическая ошибка, но она возвращает None то, что было отображено. Смотрите, почему функция print возвращает None?.

Иногда люди пишут код, который пытается получить print результат рекурсивного вызова, вместо того, чтобы returnобрабатывать его должным образом. Точно так же, как если бы функция была просто вызвана, это не работает для передачи значения обратно посредством рекурсии. Смотрите, Почему моя рекурсивная функция возвращает None?.

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

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

print() Функция записывает, то есть "печатает", строку в консоли. Оператор return завершает работу вашей функции и возвращает значение вызывающему ее объекту. Смысл функций в целом заключается в приеме входных данных и возврате чего-либо. Оператор return используется, когда функция готова вернуть значение своему вызывающему объекту.

Например, вот функция, использующая оба print() и return:

def foo():
print("hello from inside of foo")
return 1

Теперь вы можете запускать код, вызывающий foo, например:

if __name__ == '__main__':
print("going to call foo")
x = foo()
print("called foo")
print("foo returned " + str(x))

Если вы запустите это как скрипт (например, .py файл), а не в интерпретаторе Python, вы получите следующий результат:

going to call foo
hello from inside foo
called foo
foo returned 1

Надеюсь, это прояснит ситуацию. Интерпретатор записывает возвращаемые значения в консоль, чтобы я мог понять, почему кто-то может быть сбит с толку.

Вот еще один пример из интерпретатора, который демонстрирует, что:

>>> def foo():
... print("hello within foo")
... return 1
...
>>> foo()
hello within foo
1
>>> def bar():
... return 10 * foo()
...
>>> bar()
hello within foo
10

Вы можете видеть, что когда foo() вызывается из bar(), 1 не записывается в консоль. Вместо этого он используется для вычисления значения, возвращаемого из bar().

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

Ответ 2

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

Я попытаюсь лучше объяснить это на нескольких примерах и паре определений из Википедии.

Вот определение функции из Википедии

Функция в математике связывает одну величину, аргумент функции, также известный как input , с другой величиной, значением функции, также известным как output ..

Задумайтесь об этом на секунду. Что это значит, когда вы говорите, что функция имеет значение?

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

Почему вы хотите, чтобы вы спросили?

Как насчет других функций, которые могут принимать тот же тип значения в качестве входных данных?

def square(n):
return n * n

def add_one(n):
return n + 1

print square(12)

# square(12) is the same as writing 144

print add_one(square(12))
print add_one(144)
#These both have the same output

Есть необычный математический термин для функций, которые зависят только от своих входных данных для получения своих выходных данных: ссылочная прозрачность. Опять же, определение из Википедии .

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

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

Просто помните, что когда вы используете return, вы в основном говорите "Вызов этой функции совпадает с записью возвращаемого значения".

Python фактически вставит возвращаемое значение для вас, если вы откажетесь ввести свое собственное, оно называется "None" , и это особый тип, который просто ничего не означает, или null .

Ответ 3

Я думаю, что словарь - это ваша лучшая ссылка здесь

Return и Print

Вкратце:

возвращает что-либо return или отвечает вызывающей функции, в то время как print выдает текст

Ответ 4

В python мы начинаем определение функции с def, и обычно - но не обязательно - заканчиваем функцию с return.

Предположим, нам нужна функция, которая добавляет 2 к входному значению x. В математике мы могли бы написать что-то вроде f(x) = x + 2, описывающее эту взаимосвязь: значение функции, вычисляемое в x, равно x + 2.

В Python это выглядит следующим образом:

def f(x):
return x + 2

То есть: мы defвводим функцию с именем f, которой будет присвоено x значение. При выполнении кода мы вычисляем x + 2, и return это значение. Вместо описания взаимосвязи мы описываем шаги, которые необходимо предпринять для вычисления результата.

После определения функции ее можно вызывать с любым аргументом, который вам нравится. Ему не обязательно указывать имя x в вызывающем коде, и это даже не обязательно должна быть переменная:

print f(2)
>>> 4

Мы могли бы написать код для функции некоторыми другими способами. Например:

def f(x):
y = x + 2
return y

или даже

def f(x):
x = x + 2
return x

Опять же, мы выполняем шаги по порядку - x = x + 2 изменяем то, на что x ссылается (теперь это означает результат из суммы), и это то, что returnредактируется return x (потому что это значение * в момент, когда return происходит).

python