《Python语言程序设计》 —3.2.7 返回值

举报
华章计算机 发表于 2019/11/18 20:59:22 2019/11/18
【摘要】 本节书摘来自华章计算机《Python语言程序设计》一书中第3章,第3.2.7节,作者是王恺 王志 李涛 朱洪文。

3.2.7 返回值

我们在前面的很多例子中都是利用print函数将计算结果输出到屏幕上,但无法再获取到这些显示在屏幕上的结果以参与其他运算。如果希望将一个函数的运算结果返回到调用函数的位置,从而可以继续用该运算结果参与其他运算,那么应使用return语句。

我们在前面的函数中虽然都没有显式地写return语句,但实际上这些函数都有一个隐式的什么数据都不返回的return语句,即return None(或直接写为return)。下面我们以

图3-2所示的零件面积计算问题为例,说明如何利用return语句将函数中的运算结果返回到函数调用的位置,以及如何使用返回结果参与其他运算,具体实现参见代码清单3-10。


代码清单3-10 return语句使用示例

1    def CalCircleArea(r): #定义函数CalCircleArea

2        return 3.14*r*r #通过return语句将计算得到的圆面积返回

3    def CalRectArea(a,b): #定义函数CalRectArea

4        return a*b #通过return语句将计算得到的长方形面积返回

5    r1,r2,d11,d12,d21,d22=10,1,4,5,6,5

6    C1=CalCircleArea(r1) #计算大圆的面积

7    C2=CalCircleArea(r2) #计算小圆的面积

8    S1=CalRectArea(d11,d12) #计算第一个长方形面积

9    S2=CalRectArea(d21,d22) #计算第二个长方形面积

10   A=C1-C2-S1-S2 #大圆面积依次减去小圆和两个长方形面积,即得到零件面积

11   print('零件面积为%.2f'%A) #将零件面积输出


程序执行完毕后,将在屏幕上输出如下结果:

零件面积为260.86

提示 这里以代码清单3-10的第8行代码为例分析函数调用和返回过程。首先,执行函数调用CalRectArea(d11,d12),转到CalRectArea函数执行,并将实参d11(=4)和d12(=5)分别传给形参a和b;然后,执行return a*b计算a*b的结果(=20)并通过return返回函数调用的位置(即将函数调用换成return的返回值);最后,执行S1=20,将函数返回值赋给S1。

对于第6~10行代码,也可以写为一行:

A= CalCircleArea(r1)-CalCircleArea(r2)-CalRectArea(d11,d12)-CalRectArea (d21,d22)

即函数的返回值不一定要赋给一个变量保存,也可以直接参与运算。

通过return不仅能够返回数值数据,也可以返回字符串、列表、元组等数据。下面的例子展示了如何返回列表和元组数据。

1    def GetList(): #定义函数GetList

2        return [1,2,3] #将包含3个元素的列表返回

3    def GetTuple(): #定义函数GetTuple

4        return (1,2,3) #将包含3个元素的元组返回

5    def GetElements(): #定义函数GetElements

6        return 1,2,3 #返回3个数值数据,实际上会将这3个数据封装成一个元组返回

7    print(type(GetList()))

8    print(GetList())

9    print(type(GetTuple()))

10   print(GetTuple())

11   print(type(GetElements()))

12   print(GetElements())

程序执行完毕后,将会在屏幕上输出如下结果:

<class 'list'>

[1, 2, 3]

<class 'tuple'>

(1, 2, 3)

<class 'tuple'>

(1, 2, 3)

从输出结果可以看到,当调用GetList函数时,返回的是列表;当调用GetTuple和GetElements函数时,返回的都是元组。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。