return语句的目的是什么?


Answers:


100

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 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使函数停止执行,并将值返回给调用它的函数。


您需要使用"foo returned " + str(x),否则您将得到TypeError: cannot concatenate 'str' and 'int' objects
icktoofay

@NathanHughes感谢您精心设计的答案。
Andy K

23

我认为这本词典是您最好的参考

退货打印

简而言之:

return打印产生文本时返回一些信息回复函数的调用者


23

认为print语句会产生副作用,它会使您的函数向用户写一些文本,但不能其他函数使用。

我将尝试通过一些示例和Wikipedia的一些定义来更好地解释这一点。

这是Wikipedia中函数的定义

在数学中,函数将一个数量(即函数的自变量,也称为输入)与另一个数量(即函数的值)相关联。

这点考虑一下吧。当您说功能具有值时,这意味着什么?

这意味着您实际上可以用正常值替代函数的值!(假设两个值是相同类型的值)

你为什么要问?

可以接受相同类型的值作为输入的其他函数呢?

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。


12

在python中,我们以“ def”开始定义一个函数,通常但不一定以“ return”结束该函数。

变量x的函数表示为f(x)。此功能做什么?假设此函数将x加2。因此,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”实际上表示(x + 2),而不是“ A_function(x)”的x。

我想从这个简单的示例中,您将了解return命令的含义。


11

这个答案涵盖了上面没有讨论过的一些情况。
返回语句可以终止你到达终点前一个函数的执行。这导致执行流程立即返回到调用方。

在第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语句返回临时变量的值。

找出printreturn之间的区别:

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'

10

return 表示“从此函数输出该值”。

print 表示“将该值发送到(通常)stdout”

在Python REPL中,默认情况下,函数返回将输出到屏幕上(这与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
>>>

8

只是添加到@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


4

在以下示例中也可以找到“返回”和“打印”之间的区别:

返回:

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

上面的代码将为所有输入给出正确的结果。

打印:

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

注意:这将在许多测试用例中失败。

错误:

----  

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


1
嗯,您提供的测试用例的打印代码没有失败。他们都是正确的!
codingbryan

3

这是我的理解。(希望它会帮助某人,这是正确的)。

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

因此,这段简单的代码计算了某事物的出现次数。回报的位置很重要。它告诉您的程序您在哪里需要价值。因此,在打印时,会将输出发送到屏幕。返回时,您告诉该值去某处。在这种情况下,您可以看到count = 0与return缩进-我们希望将值(count + 1)替换为0。如果在缩进return命令时尝试遵循代码的逻辑,则输出将始终为1 ,因为我们永远不会告诉初始计数发生变化。我希望我做对了。哦,返回总是在函数内部。


3

return是函数定义的一部分,同时将print文本输出到标准输出(通常是控制台)。

函数是一个接受参数并返回值的过程。return适用于后者,而前者则适用于def

例:

def timestwo(x):
    return x*2

3

我认为一个非常简单的答案可能在这里有用:

return使值(通常是变量)可供调用者使用(例如,由该函数所在的函数存储return)。没有return,调用者将无法使用您的值或变量进行存储/重用。

print 打印到屏幕上,但不会使调用者可以使用该值或变量。

(完全承认,更彻底的答案更准确。)


2

关于return函数的最好的事情是您可以从函数返回值,但是您可以这样做,print所以有什么区别?基本上return不只是返回它就以对象形式提供输出,这样我们就可以将返回值从函数保存到任何变量,但是我们不能这样做,print因为它与stdout/coutin 相同C Programming

请遵循以下代码以更好地理解

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's 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(在add)的最后一行。其作用如下:

  1. 我们的函数用两个参数调用:ab
  2. 我们打印出函数正在执行的操作,在本例中为“添加”。
  3. 然后,我们告诉Python做一些向后的操作:返回的加法a + b。你可能会说这是“我补充ab再归还。”
  4. Python将两个数字相加。然后,函数结束时,任何运行该函数的行都可以将此a + b结果分配给变量。

1

return应该用于递归函数/方法,或者您要将返回的值用于算法中的后续应用程序。

print 当您希望向用户显示有意义的期望输出,并且不想使用户不感兴趣的中间结果杂乱无章时,应使用,尽管它们有助于调试代码。

下面的代码展示了如何使用returnprint正确:

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

print(fact(5))

这种解释对所有编程语言都是正确的,而不仅仅是python

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.