Python函数的返回值

来自CloudWiki
Cloud17讨论 | 贡献2020年3月16日 (一) 04:44的版本
跳转至: 导航搜索

函数返回

函数执行结束后,根据return保留字的指示决 定是否返回结果,如果返回结果,则结果将被放置到函数被调用的位置,函数使用完毕,程序继续运行。

关于return语句:

  • 在Python中,定义函数时也不需要声明函数的返回值类型,而是使用return语句结束函数执行的同时返回任意类型的值,函数返回值类型与return语句返回表达式的类型一致。
  • 不论return语句出现在函数的什么位置,一旦得到执行将直接结束函数的执行。

一个return语句

函数中可以存在一个return语句。

例如:

def mul(x,y):
    s= x*y
    return s

print(mul(2.5,3))

注:在Python中,定义函数时也不需要声明函数的返回值类型,而是使用return语句结束函数执行的同时返回任意类型的值,函数返回值类型与return语句返回表达式的类型一致。

多个return语句

函数中可以也存在多个return语句。,例如:

例:求绝对值

def my_abs(x):
    if x >= 0:
        return x
    else:
        return -x
  • 不论return语句出现在函数的什么位置,一旦得到执行将直接结束函数的执行。

没有return语句

函数中可以也可以没有return语句:

例如:

def mul(x,y):
    s= x*y
    print(x)

mul(2,3)

return语句返回多个值

  • 如果函数没有return语句、有return语句但是没有执行到或者执行了不返回任何值的return语句,解释器都会认为该函数以return None结束,即返回空值。

函数可以返回多个值吗?答案是肯定的。

比如在游戏中经常需要从一个点移动到另一个点,给出坐标、位移和角度,就可以计算出新的坐标:

import math

def move(x, y, step, angle=0):
    nx = x + step * math.cos(angle)
    ny = y - step * math.sin(angle)
    return nx, ny

import math语句表示导入math包,并允许后续代码引用math包里的sin、cos等函数。

然后,我们就可以同时获得返回值:

>>> x, y = move(100, 100, 60, math.pi / 6)
>>> print(x, y)
151.96152422706632 70.0

但其实这只是一种假象,Python函数返回的仍然是单一值:

>>> r = move(100, 100, 60, math.pi / 6)
>>> print(r)
(151.96152422706632, 70.0)

原来返回值是一个tuple!但是,在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值,所以,Python的函数返回多值其实就是返回一个tuple,但写起来更方便。

参考文档:https://www.liaoxuefeng.com/wiki/1016959663602400/1017106984190464