《Python语言程序设计》 —3 函 数
第3章 函 数
在完成一项较复杂的任务时,我们通常会将一个任务分解成若干个子任务,通过完成这些子任务逐步实现任务的整体目标。实际上,这里采用的就是结构化程序设计方法中的模块化思想。在利用计算机解决实际问题时,也通常是将原始问题分解成若干个子问题,对每个子问题分别求解后再根据各子问题的解求得原始问题的解。
在Python中,函数是实现模块化的工具。本章将首先介绍函数的定义与调用方法,以及与函数定义及调用相关的参数列表、返回值等内容。然后,介绍模块和包的概念与作用,以及模块和包的使用方法。接着,介绍变量的作用域,包括全局变量、局部变量的定义和使用方法以及global、nonlocal关键字的作用。最后,介绍函数相关的高级应用,包括递归函数、高阶函数、lambda函数、闭包和装饰器。
3.1 函数的定义与调用
在Python语言中,使用函数分为两个步骤:定义函数和调用函数。
定义函数,即根据函数的输入、输出和数据处理完成函数代码的编写。定义函数只是规定函数会执行什么操作,但并不会真正去执行。
调用函数,即真正执行函数中的代码,是指根据传入的数据完成特定的运算,并将运算结果返回函数调用位置的过程。
Python语言中的函数定义需要使用def关键字,下面先通过一个简单的例子直观地理解函数定义和调用的过程,关于函数的详细信息和更多使用方法将在后面给出。
代码清单3-1 函数定义和调用示例
1 def CalCircleArea(): #定义名为CalCircleArea的函数
2 s=3.14*3*3 #计算半径为3的圆的面积
3 print('半径为3的圆的面积为%.2f'%s) #将计算结果输出
4 CalCircleArea() #调用函数CalCircleArea
程序执行完毕后,将在屏幕上输出28.26。
提示 代码清单3-1中,第1~3行是CalCircleArea函数的定义。其中,CalCircleArea是函数名;紧跟函数名的一对小括号是函数的形参列表,该函数没有参数(后面将会介绍有参数的函数如何定义和调用);第2~3行是函数体,包含了函数调用时实际执行的操作。
第4行是CalCircleArea函数的调用。其中,CalCircleArea是要调用的函数的名称;紧跟函数名的一对小括号是函数的实参列表,与函数的形参列表相对应。因为CalCircleArea并没有参数,所以调用时实参列表为空。
Python语言中,开发者在程序中定义的变量名、函数名、类名等都是Python语言的自定义标识符,它们的命名规则完全相同。读者可参考第2章中关于变量名的命名规则。
对于代码清单3-1,其执行过程如图3-1所示。程序运行后,会直接执行第4行代码CalCircleArea(),然后通过该函数调用转去执行第1~3行的代码。CalCircleArea函数执行结束后,会回到函数调用位置继续执行,因为后面没有其他代码,所以程序结束。
图3-1 代码清单3-1执行过程
思考 如果将代码清单3-1中第4行代码改为calCircleArea(),则运行程序后会得到什么结果?读者可上机实验,并根据得到的错误提示信息将程序修改正确。
提示 编写程序时,难免会输入一些错误的代码,如标识符名写错等。平时上机练习时,如果程序报错,应仔细分析报错信息的含义,并根据报错信息分析程序中的错误。通过这样的日常积累,就能够快速定位到错误点并修改正确。
- 点赞
- 收藏
- 关注作者
评论(0)