8.1 匿名函数
1、lambda函数的定义
2、lambda函数的应用场合
8.2 递归调用函数
1、递归的概念
在面向过程的程序设计模式中,函数是编程的重要工具。一个函数既可以调用其它函数,也可以被其他函数调用。函数之间通过这种调用和被调用关联在一起,从而实现程序的既定目标。
递归调用:函数调用中,存在着一种特殊的调用关系,即一个函数在其执行过程中可以调用自身,这种情况称为递归调用。递归调用分为两种情况:直接递归和间接递归。直接递归是在函数内部直接调用自己;间接递归是函数通过其他函数间接地调用自己。
递归函数:在函数的定义中,可以通过直接的方式或间接的方式调用自身,这样的函数,称为递归调用函数,简称递归函数。在递归函数执行过程中,就将发生递归调用。
2、递归的使用条件
在程序中使用递归,往往是为了解决一个复杂的问题,且该问题具有递归关系:①必须知道该问题在最简单情况下的解;②其他情况下的解可通过递归调用简单解生成。
3、递归函数的工作原理
4、递归函数的设计
8.3 内置函数
8.4 高阶函数
1、高阶函数map
2、高阶函数sorted
8.5 模块化编程
程序设计方法有两种:面向对象的方法和面向过程的方法。
面向对象的程序设计:适合处理大规模应用程序的开发。面向对象的核心是对象。数据及对数据的操作封装在一起组成了对象,同类对象抽象出其共性,形成类。类中的大多数数据,只能用本类的方法进行处理。类通过接口与外界发生关系,对象与对象之间通过消息进行通信。
面向过程的程序设计:也称结构化程序设计,适合处理规模不是很大的程序。开发和维护一个程序的有效方法是采用“分治”的思想,通过自顶向下、逐步求精将其划分为若干个程序模块,每个模块用来实现一个特定的功能。开发中,函数是实现模块构建的重要工具,通过定义函数的形式将功能封装,可以实现程序设计的模块化。
面向过程的程序设计中,合理地应用函数可以把程序划分成不同的功能,分别用不同的函数和模块实现,通过函数的调用和模块的导入实现整体功能。函数的应用,可以使程序代码扁平化,逻辑更加清晰,便于代码的编写、阅读、调试和维护。
模块化编程的相关概念:
1、模块
模块(Module):模块于在逻辑上组织代码段,本质上是一个Python程序文件,以.py作为文件扩展名。任何一个包含Python定义和语句的.py文件都是一个模块。
模块能定义函数、类、变量,也能包含可执行代码。Python主要包括三类模块:内置模块(标准库)、第三方模块、自定义模块。
前面讨论了模块的导入方法包括(需要时可用as 指定模块的别名):
import <模块名> [as 模块别名]
from <模块名> import <函数名1,函数名2,...,函数名n>
from <模块名> import *
下面介绍自定义模块的导入方法。
当程序与自定义模块位于相同目录时,导入方法如下:
import <模块名> [as 模块别名]
当程序与自定义模块位于不同目录时,导入方法如下:
from <目录名> import <模块名> [as 模块别名]
2、包和库
8.6 程序举例
示例1:验证哥德巴赫猜想
示例2:汉诺塔问题