2013-09-28 113 views
0

我一直在学习Python有些日子了。但是,我不明白收益。我从我的教科书和在线阅读了几个解释;他们不帮忙!返回做什么?什么都没有返回

也许有人可以用以简单的方式解释返回是什么? 我已经写了几个有用的(对我来说)Python脚本,但我从来没有使用return,因为我不知道它是什么。

您能否提供一个简单的示例,说明为什么要使用返回?

也显得无可奈何:

def sqrt(n): 
    approx = n/2.0 
    better = (approx + n/approx)/2.0 
    while better != approx: 
     approx = better 
     better = (approx + n/approx)/2.0 
    return approx 

sqrt(25) 

我的书告诉我:“尝试调用与25这个函数作为参数,以确认其返回5.0”

我知道如何检查这个的唯一方法是使用print。但我不知道这是他们想要的。这个问题只是说与25打电话。它没有说增加任何更多的代码,以确认它返回5.0。

+3

'A =开方(25);打印的(a);' – rlms

回答

4

return返回从函数的值:

def addseven(n): 
    return n + 7 

a = 9 
b = addseven(a) 
print(b)  # should be 16 

它也可以用来退出功能:

def addseventosix(n): 
    if n != 6: 
     return 
    else: 
     return n + 7 

然而,即使你没有在一个return声明函数(或者您使用它而不指定要返回的值),该函数仍会返回一些内容 - None

def functionthatisuseless(n): 
    n + 7 

print(functionthatisuseless(8))  # should output None 

有时您可能想要从函数返回多个值。但是,不能有多个return语句 - 控制流在第一个语句之后离开函数,所以后面的任何语句都不会执行。在Python中,我们通常使用一个元组,而元组拆包:

def addsevenandaddeight(n): 
    return (n+7, n+8)  # the parentheses aren't necessary, they are just for clarity 

seven, eight = addsevenandaddeight(0) 
print(seven)  # should be 7 
print(eight)  # should be 8 

return声明是什么让你呼吁其他功能结果的功能:

def addseven(n): 
    return n+7 

def timeseight(n): 
    return n*8 

print(addseven(timeseight(9)) 

# what the intepreter is doing (kind of): 
# print(addseven(72)) # 72 is what is returned when timeseight is called on 9 
# print(79) 
# 79 
2

您可能需要添加print或将整个事情写入交互式解释器来查看返回值。

return可以从某个函数中获得某些输出/结果。这个值在后面的代码,你必须把它分配给一个变量:

a = sqrt(25) 
0

你的课本希望你尝试在interactive interpreter,这表明,当你进入他们你重视的事。下面是一个示例:

$ python 
Python 2.7.5+ (default, Sep 17 2013, 17:31:54) 
[GCC 4.8.1] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> def sqrt(n): 
...  approx = n/2.0 
...  better = (approx + n/approx)/2.0 
...  while better != approx: 
...   approx = better 
...   better = (approx + n/approx)/2.0 
...  return approx 
... 
>>> sqrt(25) 
5.0 
>>> 

这里关键的是表达式和​​语句之间的区别。 def是一个声明,并没有结果。块定义的sqrt是一个函数;而函数总是产生一个返回值,这样它们就可以用在表达式中,如sqrt(25)。如果您的函数不包含returnyield,则此值为None,解释程序忽略此值,但在此情况下,sqrt会返回一个自动打印的数字(并存储在名为_的变量中)。在脚本中,您可以用print sqrt(25)替换最后一行以将输出提供给终端,但返回值的有用之处在于您可以进行进一步处理,例如root=sqrt(25)print sqrt(25)-5

如果我们要像脚本一样运行完全相同的行,而不是在交互模式下,则不会出现隐式打印。行sqrt(25)被接受为表达式的语句,这意味着它被计算 - 但是然后该值被简单地丢弃。它甚至没有进入_(这与计算器的Ans按钮相同)。通常情况下,我们将这个用于导致副作用的函数,如quit(),这会导致Python退出。

顺便说一下,print是Python 2中的一个语句,但是是Python 3中的一个函数。这就是为什么越来越多的使用它有括号。

这里是一个脚本,它依赖于sqrt(在这种情况下Python的自己的版本)返回值:

from math import sqrt 
area = float(raw_input("Enter a number: ")) 
shortside = sqrt(area) 
print "Two squares with the area", area, "square meters,", 
print "placed side to side, form a rectangle", 2*shortside, "meters long", 
print "and", shortside, "meters wide"