- 译者序
- 前言
- 第1章 问答环节
- 第2章 Python 如何运行程序
- 第3章 如何运行程序
- 第4章 介绍 Python 对象类型
- 第5章 数字
- 第6章 动态类型简介
- 第7章 字符串
- 第8章 列表与字典
- 第9章 元组、文件及其他
- 第10章 Python 语句简介
- 第11章 赋值、表达式和打印
- 第12章 if 测试和语法规则
- 第13章 while 和 for 循环
- 第14章 迭代器和解析,第一部分
- 第15章 文档
- 第16章 函数基础
- 第17章 作用域
- 第18章 参数
- 第19章 函数的高级话题
- 第20章 迭代和解析,第二部分
- 第21章 模块:宏伟蓝图
- 第22章 模块代码编写基础
- 第23章 模块包
- 第24章 高级模块话题
- 第25章 OOP:宏伟蓝图
- 第27章 更多实例
- 第28章 类代码编写细节
- 第29章 运算符重载
- 第30章 类的设计
- 第31章 类的高级主题
- 第32章 异常基础
- 第34章 异常对象
- 第35章 异常的设计
- 第36章 Unicode 和字节字符串
- 字符串基础知识
- Python 的字符串类型
- 文本和二进制文件
- Python 3.0 中的字符串应用
- 转换
- 编码 Unicode 字符串
- 编码非ASCII文本
- 编码和解码非ASCII文本
- 其他 Unicode 编码技术
- 转换编码
- 在 Python 2.6 中编码 Unicode 字符串
- 源文件字符集编码声明
- 使用 Python 3.0 Bytes 对象
- 序列操作
- 创建 bytes 对象的其他方式
- 混合字符串类型
- 使用 Python 3.0(和 Python 2.6)bytearray 对象
- 使用文本文件和二进制文件
- Python 3.0 中的文本和二进制模式
- 类型和内容错误匹配
- 使用 Unicode 文件
- 在 Python 3.0 中处理 BOM
- Python 2.6 中的 Unicode 文件
- Python 3.0 中其他字符串工具的变化
- Struct二进制数据模块
- pickle对象序列化模块
- XML解析工具
- 本章小结
- 本章习题
- 习题解答
- 第37章 管理属性
- 第38章 装饰器
- 第39章 元类
- 附录A 安装和配置
- 附录B 各部分练习题的解答
- 作者介绍
- 封面介绍
第16章 函数基础
简而言之,一个函数就是将一些语句集合在一起的部件,它们能够不止一次地在程序中运行。函数还能够计算出一个返回值,并能够改变作为函数输入的参数,而这些参数在代码运行时也许每次都不相同。以函数的形式去编写一个操作可以使它成为一个能够广泛应用的工具,让我们在不同的情形下都能够使用它。
更具体地说,函数是在编程过程中剪剪贴贴的替代——我们不再有一个操作的代码的多个冗余副本,而是将代码包含到一个单独的函数中。通过这样做,我们可以大大减少今后的工作:如果这个操作之后必须要修改,我们只需要修改其中的一份拷贝,而不是所有代码。
函数是Python为了代码最大程度的重用和最小化代码冗余而提供的最基本的程序结构。正如我们将看到的一样,函数也是一种设计工具,使用它我们可以将复杂的系统分解为可管理的部件。表16-1总结了这一部分中我们将会学习到的与函数相关的主要语句和表达式。
为何使用函数
在学习具体内容之前,我们先了解函数的概念。函数是一个通用的程序结构部件。你也许已经在其他的编程语言中见到过,有时称为子例程或过程。简而言之,函数主要扮演了两个角色。
最大化的代码重用和最小化代码冗余
和现代编程语言中一样,Python的函数是一种简单的办法去打包逻辑算法,使其能够在之后不止在一处、不止一次地使用。直到现在,我们所写的代码都是立即运行的。函数允许整合以及通用化代码,以便这些代码能够在之后多次使用。因为它们允许一处编写多处运行,Python的函数是这个语言中最基本的组成工具——它让我们在程序中减少代码的冗余成为现实,并为代码的维护节省了不少的力气。
流程的分解
函数也提供了一种将一个系统分割为定义完好的不同部分的工具。例如,去做一份比萨,开始需要混合面粉,将面粉搅拌匀,增加顶部原料和烤等。如果你是在编写一个制作比萨的机器人的程序,函数将会将整个“做比萨”这个任务分割成为独立的函数来完成整个流程中的每个子任务。独立的实现较小的任务要比一次完成整个流程要容易得多。一般来说,函数讲的是流程:告诉你怎样去做某事,而不是让你使用它去做的事。我们将会在第六部分了解函数重要的原因。
在本部分,我们将会探索在Python中编写函数所使用到的工具:函数的基本概念,作用域以及参数传递,还有一些相关的概念,例如,生成器和函数式工具。由于多态的重要性在目前这个编程水平逐渐显得重要起来,我们也会重新回顾本书前面提到的多态。正如你将会看到的那样,函数并没有用到太多的新语法,但是它们带给了我们很多的编程方面的启示。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论