第 16 章 函数基础 功能基础
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
在第三部分中,我们学习了 Python 中的基本过程语句。下面,我们将继续探索一组额外的语句和表达式,我们可以用它们来创建自己的函数。
简单地说,函数是一种装置,它将一组语句组合在一起,以便在程序中多次运行--即通过名称调用的打包存储过程。函数还可以计算结果值,并允许我们指定作为函数输入的参数,这些参数在每次运行代码时都可能不同。将操作编码为函数使其成为一种通用工具,我们可以在各种情况下使用它。
从根本上说,函数是剪切和粘贴编程的替代方法--我们可以将一个操作的代码整合到一个函数中,而不是拥有多个多余的代码拷贝。这样,我们就能从根本上减少未来的工作:如果以后必须更改操作,我们只需在函数中更新一个副本,而不是在整个程序中分散更新多个副本。
函数也是 Python 为最大化代码重用而提供的最基本的程序结构,它引领我们进入更大的程序设计概念。正如我们将看到的,函数让我们将复杂的系统分割成易于管理的部分。通过将每个部分作为一个函数来实现,我们可以使其既可重用又更容易编码。
表 16-1预览了我们将在本书这一部分学习的与函数相关的主要工具--包括调用表达式、两种创建函数的方法 (def 和lambda)、两种管理作用域可见性的方法 (global 和nonlocal),以及两种将结果发送回调用者的方法 (return 和yield)。
| 声明或表达 | 实例 |
|---|---|
调用表达式 | myfunc('spam', 'eggs', meat=ham, *rest) |
| def printer(message):
print('Hello ' + message) |
| def adder(a, b=1, *c):
return a + b + c[0] |
| x = 'old'
def changer():
global x; x = 'new' |
| def outer():
x = 'old'
def changer():
nonlocal x; x = 'new' |
| def squares(x):
for i in range(x): yield i ** 2 |
| funcs = [lambda x: x**2, lambda x: x**3] |
为什么使用函数?
在了解细节之前,让我们先清楚地了解一下函数是怎么回事。函数几乎是一种通用的程序结构工具。在其他语言中,函数可能被称为子程序或过程。简单介绍一下,函数有两个主要的开发作用:
- 最大限度地重复使用代码和减少冗余
与大多数编程语言一样,Python 函数是打包您可能希望在多个地方和多个时间使用的逻辑的最简单方法。到目前为止,我们编写的所有代码都是立即运行的。函数允许我们对代码进行分组和概括,以便以后多次任意使用。因为函数允许我们在一个地方编码一个操作,并在许多地方使用它,所以 Python 函数是语言中最基本的因子工具:它允许我们减少程序中的代码冗余,从而减少维护工作。
- 程序分解
函数还提供了一种工具,可将系统拆分成角色明确的各个部分。例如,要从头开始制作披萨,首先要混合面团、擀开、添加配料、烘烤,等等。如果您要为一个制作披萨的机器人编程,函数可以帮助您将 "制作披萨 "的整体任务划分为若干小块,其中每个子任务都有一个函数。与一次性实现整个流程相比,单独实现较小的任务要容易得多。一般来说,函数是关于过程的--如何做某事,而不是做什么。我们将在 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access