Подтвердить что ты не робот

Какова цель заявления о возврате?

Какое простое базовое объяснение того, что является оператором return, как его использовать в Python?

И в чем разница между ним и оператором print?

4b9b3361

Ответ 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))

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

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

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

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

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

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

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

Ответ 2

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

Return и Print

Короче:

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

Ответ 3

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

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

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

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

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

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

Зачем вам это нужно?

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

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

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

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

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

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

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

Ответ 4

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

Функция переменной x обозначается как f (x). Что делает эта функция? Предположим, эта функция добавляет 2 к x. Итак, f (x) = x + 2

Теперь код этой функции будет:

def A_function (x):
    return x + 2

После определения функции вы можете использовать ее для любой переменной и получить результат. Такие как:

print A_function (2)
>>> 4

Мы могли бы просто написать код немного по-другому, например:

def A_function (x):
    y = x + 2
    return y
print A_function (2)

Это также дало бы "4".

Теперь мы можем даже использовать этот код:

def A_function (x):
    x = x + 2
    return x
print A_function (2)

Это также дало бы 4. Смотрите, что "x" рядом с return фактически означает (x + 2), а не x "A_function (x)".

Я думаю, из этого простого примера вы бы поняли значение команды возврата.

Ответ 5

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

В строке № 4:

def ret(n):
    if n > 9:
         temp = "two digits"
         return temp     #Line 4        
    else:
         temp = "one digit"
         return temp     #Line 8
    print("return statement")
ret(10)

После выполнения условного оператора функция ret() завершается из-за return temp (строка 4). Таким образом, print("return statement") не выполняется.

Выход:

two digits   

Этот код, который появляется после условных операторов или места, куда поток управления не может добраться, является мертвым кодом.

Возвращаемые значения
В строках № 4 и 8 оператор return используется для возврата значения временной переменной после выполнения условия.

Чтобы выявить разницу между печатью и возвратом:

def ret(n):
    if n > 9:
        print("two digits")
        return "two digits"           
    else :
        print("one digit")
        return "one digit"        
ret(25)

Выход:

two digits
'two digits'

Ответ 6

return означает "вывести это значение из этой функции".

print означает "отправить это значение (обычно) на стандартный вывод"

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

Это пример печати:

>>> n = "foo\nbar" #just assigning a variable. No output
>>> n #the value is output, but it is in a "raw form"
'foo\nbar'
>>> print n #the \n is now a newline
foo
bar
>>>

Это пример возврата:

>>> def getN():
...    return "foo\nbar"
...
>>> getN() #When this isn't assigned to something, it is just output
'foo\nbar'
>>> n = getN() # assigning a variable to the return value. No output
>>> n #the value is output, but it is in a "raw form"
'foo\nbar'
>>> print n #the \n is now a newline
foo
bar
>>>

Ответ 7

Просто чтобы добавить к @Nathan Hughes отличный ответ:

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

Вот пример:

>>> def make_3_characters_long(some_string):
...     if len(some_string) == 3:
...         return False
...     if str(some_string) != some_string:
...         return "Not a string!"
...     if len(some_string) < 3:
...         return ''.join(some_string,'x')[:,3]
...     return some_string[:,3]
... 
>>> threechars = make_3_characters_long('xyz')    
>>> if threechars:
...     print threechars
... else:
...     print "threechars is already 3 characters long!"
... 
threechars is already 3 characters long!

См. Раздел " Стиль кода" в Руководстве по Python для получения дополнительных советов по этому способу использования return.

Ответ 8

Различие между "возвратом" и "печатью" также можно найти в следующем примере:

RETURN:

def bigger(a, b):
    if a > b:
        return a
    elif a <b:
        return b
    else:
        return a

Приведенный выше код даст правильные результаты для всех входов.

PRINT:

def bigger(a, b):
    if a > b:
        print a
    elif a <b:
        print b
    else:
        print a

ПРИМЕЧАНИЕ. Это не удастся для многих тестовых случаев.

ERROR:

----  

FAILURE : Test case input: 3, 8.

            Expected result: 8  

FAILURE : Test case input: 4, 3.

            Expected result: 4  

FAILURE : Test case input: 3, 3.

            Expected result: 3  

You passed 0 out of 3 test cases

Ответ 9

Вот мое понимание. (надеюсь, что это поможет кому-то, и это правильно).

def count_number_of(x):
    count = 0
    for item in x:
        if item == "what_you_look_for":
        count = count + 1
    return count

Итак, этот простой кусок кода подсчитывает количество вхождений чего-то. Размещение возврата является значительным. Он сообщает вашей программе, где вам нужно значение. Поэтому, когда вы печатаете, вы отправляете вывод на экран. Когда вы вернетесь, вы скажете, что нужно куда-то идти. В этом случае вы можете увидеть, что count = 0 с отступом с возвратом - мы хотим, чтобы значение (count + 1) заменило 0. Если вы попытаетесь следовать логике кода, когда вы отступаете от команды возврата, результат будет всегда равным 1, потому что мы никогда не будем указывать начальный счет для изменения. Надеюсь, у меня все получилось. О, и возврат всегда находится внутри функции.

Ответ 10

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

Функция - это процедура, принимающая параметры и возвращающая значение. return для последнего, а первый - с def.

Пример:

def timestwo(x):
    return x*2

Ответ 11

return следует использовать для рекурсивных функций/методов или вы хотите использовать возвращаемое значение для последующих приложений в вашем алгоритме.

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

В следующем коде показано, как правильно использовать return и print:

def fact(x):
    if x < 2:
        return 1
    return x * fact(x - 1)

print(fact(5))

Это объяснение справедливо для всех языков программирования, а не только python.

Ответ 12

Лучше всего в функции return вы можете вернуть значение из функции, но вы можете сделать то же самое с print, так что же разница? В основном return не только его возврат дает результат в форме объекта, так что мы можем сохранить это возвращаемое значение из функции в любую переменную, но мы не можем сделать с print, потому что это то же самое, что и stdout/cout в C Programming.

Следуйте приведенному ниже коду для лучшего понимания

CODE

def add(a, b):
    print "ADDING %d + %d" % (a, b)
    return a + b

def subtract(a, b):
    print "SUBTRACTING %d - %d" % (a, b)
    return a - b

def multiply(a, b):
    print "MULTIPLYING %d * %d" % (a, b)
    return a * b

def divide(a, b):
    print "DIVIDING %d / %d" % (a, b)
    return a / b


print "Let do some math with just functions!"

age = add(30, 5)
height = subtract(78, 4)
weight = multiply(90, 2)
iq = divide(100, 2)

print "Age: %d, Height: %d, Weight: %d, IQ: %d" % (age, height, weight, iq)


# A puzzle for the extra credit, type it in anyway.
print "Here is a puzzle."

what = add(age, subtract(height, multiply(weight, divide(iq, 2))))

print "That becomes: ", what, "Can you do it by hand?"

Теперь мы выполняем собственные математические функции для add, subtract, multiply, и divide. Важно отметить последнюю строку, где мы говорим return a + b (in add). Это делается следующим образом:

  • Наша функция вызывается с двумя аргументами: a и b.
  • Мы печатаем, что делает наша функция, в этом случае "ДОБАВИТЬ".
  • Затем мы говорим Python делать что-то вроде обратного: мы возвращаем добавление a + b. Вы можете сказать это так: "Я добавляю a и b, а затем возвращаю их."
  • Python добавляет два числа. Затем, когда функция заканчивается, любая строка, которая ее запускает, сможет присвоить этому результату a + b переменную.