“Python函数的返回值”的版本间的差异

来自CloudWiki
跳转至: 导航搜索
return语句返回多个值
 
(未显示同一用户的1个中间版本)
第73行: 第73行:
  
 
原来返回值是一个tuple!但是,在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值,所以,Python的函数返回多值其实就是返回一个tuple,但写起来更方便。
 
原来返回值是一个tuple!但是,在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值,所以,Python的函数返回多值其实就是返回一个tuple,但写起来更方便。
 +
 +
上面的也可以这么写:
 +
 +
<nowiki>ressult = move(100, 100, 60, math.pi / 6)
 +
print(type(result))
 +
print(result[0],result[1])</nowiki>
 +
 +
===在try-except异常中的使用===
 +
 +
<nowiki>def manyret(x):
 +
    try:
 +
        if x>0:
 +
            return x+1
 +
        else:
 +
            return x-1
 +
    except:
 +
        return0</nowiki>
 +
   
  
 
参考文档:https://www.liaoxuefeng.com/wiki/1016959663602400/1017106984190464
 
参考文档:https://www.liaoxuefeng.com/wiki/1016959663602400/1017106984190464

2023年3月27日 (一) 02:07的最新版本

函数返回

函数执行结束后,根据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,但写起来更方便。

上面的也可以这么写:

ressult = move(100, 100, 60, math.pi / 6)
print(type(result))
print(result[0],result[1])

在try-except异常中的使用

def manyret(x):
    try:
        if x>0:
            return x+1
        else:
            return x-1
    except:
        return0
   

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