python中函数的优点是使程序模块化_【自学笔记】Python语言程序设计(第5章 函数和代码复用)...

1.    函数的基本使用4aa545dccf7de8d4a93c2b2b8e3265ac0a26d216.png

(1)    函数的定义

①    函数是一段具有特定功能的、可重用的语句组,用函数名来表示并通过函数名进行功能调用。

②    函数是一种功能抽象(对函数的使用不需要了解函数内部实现原理,只要了解函数的输入输出方式)。

③    使用函数主要有两个目的:降低编程难度和代码重用。

④    语法格式a3353bb4f349fe66d2c24a10396ee4a8e4618ace.png

(2)    函数的调用过程:程序调用一个函数需要执行以下4个步骤。

①    调用程序在调用处暂停执行。

②    在调用时将实参复制给函数的形参。

③    执行函数体语句。

④    函数调用结束给出返回值,程序回到调用前的暂停处继续执行。8304a564710731953a74ff5bc4cd9afccbc7163e.png代码

fea8553fa3de632ece31b0f6d290350eddc3a151.png

06d859c86dfc05b17f72ad904e2ad280eea82c3f.png调用过程

(3)    函数的参数传递

①    可选参数:函数定义时可以为某些参数指定默认值。(可选参数必须定义在非可选参数后面)f941824cda5f5d877e6789c2559d3c7c5c878fe5.png代码

6137de188b7135e1a81c44a2e16a493f6f6bbecd.png

②    可变数量参数:通过在参数前增加*实现。(只能出现在参数列表最后,调用时,被当作元组类型传入)589ceb2a5168ac2f99c3e32253488b016e42fbb6.png代码

859ccd23e2e3ca7ec02112cf516ac2f0d2886908.png运行效果

(4)    参数的位置和名称传递

①    实参默认采用按照位置顺序的方式传递。

②    当参数多或调用距离远时,位置传递可读性较差。f3d51e91b9a1286ded88b07d77bf53d236be35f6.png代码

559932ff0a82e8afd90c14658d14291060fc0dbe.png

(5)    函数的返回值

①    return语句用来退出函数并将程序返回到函数被调用的位置继续执行。

②    return语句可以同时将0个、1个或多个结果返回给函数被调用处的变量。2365cd901f84d11af9e2603b18d49ed6c5359373.png

0c4b29ebc1ba1dc5bd560bec0e1be1033c5f7172.png运行效果

③    函数可以没有return,此时函数并不返回值,而将控制权返回给调用者。

(6)    全局变量和局部变量

①    全局变量:在函数之外定义的变量,一般没有缩进,在程序执行全过程有效。

②    局部变量:在函数内部使用的变量,仅在函数内部有效,当函数退出时变量将不存在。e700a70374cf8e7d165e51660e2760e2df7c982a.png

③    使用保留字global在函数内部使用全局变量。a7f4bb479e4bef1301c9fe3410faeb988e80f2f5.png代码

d5000aa234319e6ad74f32516ef8a49eeb98afc6.png

④    局部变量为组合数据类型且未创建,等同于全局变量。757630aa301f49aa264b0e093a9bcc5ac67bd66e.png代码

8630c1d1989438e7f2f75b1eaba915ba11d16fc5.png运行效果

(7)    lambda 函数

①    保留字lambda用于定义匿名函数(将函数名作为函数结果返回)。

②    语法格式:<函数名> = lambda <参数列表> : <表达式>

等价于:def <函数名>(<参数列表>): / return <表达式>

③    用于定义简单的,能够在一行内表示的函数。4f5c3a520968db6c78876dec9bcf28876df3f8de.png代码

④    主要用作一些特定函数或方法的参数,一般情况建议使用def定义的普通函数。

2.    实例7:七段数码管绘制(用于理解函数及其封装的价值)4aa545dccf7de8d4a93c2b2b8e3265ac0a26d216.png

(1)    问题分析e54048f40d5566f4f38cf715ee6b0c2f7f9e216d.png引用自:PYE5.2-9

fe079fb77de13c161ba99d95fbf8483a4e3936d0.png问题分析

(2)    实例编写a860d2e831ea3704282a56db977fd590530b353d.png代码

49307886c2003c0c0d381907527d9125ea7df76a.png代码(接上图)

86c136582f206ce3b9ff9eb082a1e6c9739f6694.png运行效果

3.    代码复用和模块化设计4aa545dccf7de8d4a93c2b2b8e3265ac0a26d216.png

(1)    代码复用:把代码当成资源进行抽象。

①    代码资源化:程序代码是一种用来表达计算的“资源”。

②    代码抽象化:使用函数等方法对代码赋予更高级别的定义。

③    同一份代码在需要时可以被重复使用。

④    函数和对象是代码复用的两种主要形式。

Ⅰ    函数:将代码命名在代码层面建立了初步抽象。(基本)

Ⅱ    对象:属性.和方法

(2)    模块化设计:分而治之。

①    通过函数或对象的封装功能将程序划分为主程序、子程序和子程序间关系的表达。

②    2个基本要求

Ⅰ    紧耦合:两个部分之间交流很多,无法独立存在。(模块内部)

Ⅱ    松耦合:两个部分之间交流较少,可以独立存在。(模块之间)

(3)    为了增强代码可读性,将程序初始化或函数间过渡语句封装为main()函数,使得全部代码由函数组成,最后通过调用main()函数执行程序。

4.    函数的递归4aa545dccf7de8d4a93c2b2b8e3265ac0a26d216.png

(1)    递归的定义

①    函数定义中调用函数自身的方式。

②    2个关键特征

Ⅰ    链条:计算过程存在递归链条。

Ⅱ    基例:存在一个或多个不需要再次递归的基例。

③    递归是数学归纳法思维的编程体现。ec0f2c8b6751c11e740e45abf8189b3936a6c115.png阶乘的定义

(2)    递归的使用方法

①    递归的实现(函数 + 分支语句)

Ⅰ    递归本身就是一个函数,需要函数定义方式描述。

Ⅱ    函数内部,采用分支语句对输入参数进行判断。

Ⅲ    基例和链条,分别编写对应代码。34660b01f68ea60bd3d5479d1610f7c8c1da20e6.png代码:阶乘计算

②    递归的调用过程

Ⅰ    每次函数调用时,函数参数的副本会临时存储,递归中各函数再运算自己的参数,相互没有影响。

Ⅱ    当基例结束运算并返回值时,各函数逐层结束运算,向调用者返回计算结果。f1aac3e6f397703ccb30062cf33130daa0189cfc.png引用自:PYE5.3-17

③    实例解析

Ⅰ    字符串反转71630713c4be833f5f24ea25bfd9749b91f0008d.png代码

1242612ee11ce3c484db6bfd28e37ae824b45e9d.pnga("ABCD")

Ⅱ    斐波那契数列9f07d5b42f8a3607af13917654c0d2b221eb50c5.png定义

7b6cb935403b8cb87db07342e64f87508b6ccd3e.png代码

Ⅲ    汉诺塔问题b37cd65f4eda8435b2dedb160a379cc4e8784756.png问题分析

0b64fa7e170432fbedc2614952d9220d3616410f.png代码

2be0d82a66c779278fe6d1a45e0eaa96b2e5a212.png

5e81d6cb8565fd763955da9b38b8eaaece2b988f.pnghanoi(3,"A","C","B")

5.    模块4:PyInstaller库的使用4aa545dccf7de8d4a93c2b2b8e3265ac0a26d216.png

(1)    概述:将Python语言脚本(.py文件)打包成可执行文件的第三方库。

(2)    安装46bdb0fe7f9a6dea721af2ad181d17820084bf31.png第一步

ec3bc39ba16050dd1d8b7539019236aec6d265a1.png第二步

(3)    使用说明:(cmd)pyinstaller -F <文件名.py>448f0f5e5e67ab10375e29f82efeb5890d6f62b9.png代码

caaba246d5736702d3a2ce9222dcd8758a1605be.png原文件

87c62227f8e128de62214666d982c41109f8a329.png运行效果

(4)    常用参数c6032d8a153bccb61fc263bde6a3bcc8aaba212f.png

(5)    注意问题

①    文件路径中不能出现空格和英文句号。

②    源文件必须是UTF-8编码。(IDLE编写的都可直接使用)

6.    实例8:科赫雪花小包裹4aa545dccf7de8d4a93c2b2b8e3265ac0a26d216.png

(1)    问题分析7da17ccc8c0799d81028895608a856ebe1b06a5e.png引用自:PYE5.5-6

(2)    实例编写1b29076fa3171831bf937495fa7dc2a0bcc81191.png代码

22fe11f67c43caab04a2f43a569f4cddd71488da.png运行效果

4aa545dccf7de8d4a93c2b2b8e3265ac0a26d216.png《Python语言程序设计》(第5周)

《Python语言程序设计基础(第2版)》(第5章、8.4)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值