1. 函数的基本使用
(1) 函数的定义
① 函数是一段具有特定功能的、可重用的语句组,用函数名来表示并通过函数名进行功能调用。
② 函数是一种功能抽象(对函数的使用不需要了解函数内部实现原理,只要了解函数的输入输出方式)。
③ 使用函数主要有两个目的:降低编程难度和代码重用。
④ 语法格式
(2) 函数的调用过程:程序调用一个函数需要执行以下4个步骤。
① 调用程序在调用处暂停执行。
② 在调用时将实参复制给函数的形参。
③ 执行函数体语句。
④ 函数调用结束给出返回值,程序回到调用前的暂停处继续执行。代码
调用过程
(3) 函数的参数传递
① 可选参数:函数定义时可以为某些参数指定默认值。(可选参数必须定义在非可选参数后面)代码
② 可变数量参数:通过在参数前增加*实现。(只能出现在参数列表最后,调用时,被当作元组类型传入)代码
运行效果
(4) 参数的位置和名称传递
① 实参默认采用按照位置顺序的方式传递。
② 当参数多或调用距离远时,位置传递可读性较差。代码
(5) 函数的返回值
① return语句用来退出函数并将程序返回到函数被调用的位置继续执行。
② return语句可以同时将0个、1个或多个结果返回给函数被调用处的变量。
运行效果
③ 函数可以没有return,此时函数并不返回值,而将控制权返回给调用者。
(6) 全局变量和局部变量
① 全局变量:在函数之外定义的变量,一般没有缩进,在程序执行全过程有效。
② 局部变量:在函数内部使用的变量,仅在函数内部有效,当函数退出时变量将不存在。
③ 使用保留字global在函数内部使用全局变量。代码
④ 局部变量为组合数据类型且未创建,等同于全局变量。代码
运行效果
(7) lambda 函数
① 保留字lambda用于定义匿名函数(将函数名作为函数结果返回)。
② 语法格式:<函数名> = lambda <参数列表> : <表达式>
等价于:def <函数名>(<参数列表>): / return <表达式>
③ 用于定义简单的,能够在一行内表示的函数。代码
④ 主要用作一些特定函数或方法的参数,一般情况建议使用def定义的普通函数。
2. 实例7:七段数码管绘制(用于理解函数及其封装的价值)
(1) 问题分析引用自:PYE5.2-9
问题分析
(2) 实例编写代码
代码(接上图)
运行效果
3. 代码复用和模块化设计
(1) 代码复用:把代码当成资源进行抽象。
① 代码资源化:程序代码是一种用来表达计算的“资源”。
② 代码抽象化:使用函数等方法对代码赋予更高级别的定义。
③ 同一份代码在需要时可以被重复使用。
④ 函数和对象是代码复用的两种主要形式。
Ⅰ 函数:将代码命名在代码层面建立了初步抽象。(基本)
Ⅱ 对象:属性.和方法
(2) 模块化设计:分而治之。
① 通过函数或对象的封装功能将程序划分为主程序、子程序和子程序间关系的表达。
② 2个基本要求
Ⅰ 紧耦合:两个部分之间交流很多,无法独立存在。(模块内部)
Ⅱ 松耦合:两个部分之间交流较少,可以独立存在。(模块之间)
(3) 为了增强代码可读性,将程序初始化或函数间过渡语句封装为main()函数,使得全部代码由函数组成,最后通过调用main()函数执行程序。
4. 函数的递归
(1) 递归的定义
① 函数定义中调用函数自身的方式。
② 2个关键特征
Ⅰ 链条:计算过程存在递归链条。
Ⅱ 基例:存在一个或多个不需要再次递归的基例。
③ 递归是数学归纳法思维的编程体现。阶乘的定义
(2) 递归的使用方法
① 递归的实现(函数 + 分支语句)
Ⅰ 递归本身就是一个函数,需要函数定义方式描述。
Ⅱ 函数内部,采用分支语句对输入参数进行判断。
Ⅲ 基例和链条,分别编写对应代码。代码:阶乘计算
② 递归的调用过程
Ⅰ 每次函数调用时,函数参数的副本会临时存储,递归中各函数再运算自己的参数,相互没有影响。
Ⅱ 当基例结束运算并返回值时,各函数逐层结束运算,向调用者返回计算结果。引用自:PYE5.3-17
③ 实例解析
Ⅰ 字符串反转代码
a("ABCD")
Ⅱ 斐波那契数列定义
代码
Ⅲ 汉诺塔问题问题分析
代码
hanoi(3,"A","C","B")
5. 模块4:PyInstaller库的使用
(1) 概述:将Python语言脚本(.py文件)打包成可执行文件的第三方库。
(2) 安装第一步
第二步
(3) 使用说明:(cmd)pyinstaller -F <文件名.py>代码
原文件
运行效果
(4) 常用参数
(5) 注意问题
① 文件路径中不能出现空格和英文句号。
② 源文件必须是UTF-8编码。(IDLE编写的都可直接使用)
6. 实例8:科赫雪花小包裹
(1) 问题分析引用自:PYE5.5-6
(2) 实例编写代码
运行效果
《Python语言程序设计》(第5周)
《Python语言程序设计基础(第2版)》(第5章、8.4)