我已经学习了几天Python。但是,我不明白回报。我从我的教科书和在线阅读了几个解释;他们没有帮助!
也许某人可以以简单的方式解释返回的内容? 我已经写了几个有用的(对我来说)Python脚本,但我从未使用过返回,因为我不知道它的作用。
您能否提供一个简单示例,说明为什么要使用退货?
它似乎也什么都不做:
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。”
我知道如何检查这一点的唯一方法是使用打印。但我不知道他们是否正在寻找。问题就是用25来调用。它没有说要在代码中添加更多内容以确认它返回5.0。
答案 0 :(得分: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
答案 1 :(得分:2)
您需要添加print
或将整个内容写入交互式解释器以查看返回值。
return
可以从函数中获取一些输出/结果。要在代码中稍后将该值分配给变量:
a = sqrt(25)
答案 2 :(得分: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
块定义的def
是一个函数;函数总是产生一个返回值,这样它们就可以用在表达式中,比如sqrt(25)
。如果您的函数不包含return
或yield
,则此值为None
,解释器会忽略该值,但在这种情况下,sqrt返回一个自动打印的数字(并存储在变量中)叫_
)。在脚本中,您可以使用print sqrt(25)
替换最后一行以获取到终端的输出,但返回值的有用之处在于您可以进行进一步处理,例如root=sqrt(25)
或{{1 }}。
如果我们要运行与脚本完全相同的行,而不是在交互模式下运行,则不会进行隐式打印。行print sqrt(25)-5
被接受为表达式的语句,这意味着它被计算 - 但随后该值被简单地丢弃。它甚至没有进入sqrt(25)
(这相当于计算器的Ans按钮)。通常我们将此用于导致副作用的函数,例如_
,这会导致Python退出。
顺便说一下,quit()
是Python 2中的一个语句,但是Python 3中的一个函数。这就是为什么越来越多的它使用括号的原因。
这是一个依赖于print
(在本例中为Python自己的版本)返回值的脚本:
sqrt
答案 3 :(得分:0)
return
关键字用于退出函数并返回值。要让函数返回值,请使用return
语句。
与Charlie Duffy comments一样,当您不在函数中的任何地方使用return
时,Python的隐式返回值为None
。换句话说,如果您不告诉函数应该返回什么,那么None
就是它返回的内容。
因此,如果您将
def gimmieFive(): return 5
更改为def gimmieFive(): 5
,那么运行x = gimmieFive()
的人将拥有x == None
,而不是x == 5
。 5只被扔掉时 gimmieFive退出。