过程抽象—从表达式到函数
Luckyjing 于 2020年11月19日 发表在 计算机程序与解释

1. 导入库函数

python定义了大量的函数,其中也包括操作数函数,通过模块的方式来组织函数,这些模块最终构成Python库。

>>> from math import sqrt
>>> sqrt(64)
8.0

2. 嵌套表达式

Python计算嵌套表达式如下:

- 计算运算符和操作数子表达式

- 将运算符子表达式的值的函数应用于作为运算数子表达式的值的参数

>>> mul(add(2,mul(4,6)),add(3,5))
208

具体表达式树,自上而下增长,如图所示

image.png

Pure函数和Non-Pure函数

Pure function: 函数具有一些输入(它们的参数),并返回一些输出(应用它们的结果),如内置函数

>>> abs(-2)
2

Non-Pure函数:这些函数除返回值外,导致解释器和计算机状态发生改变。

>>> print(print(1),print(2))
1
2
None None

3. 函数定义

除了复合表达式和名称与值绑定等简单的抽象方式,提供了一种强大的抽象技术-函数,使得名称可以与复合操作进行绑定,并可以作为一个单元使用。

def sum_square(x,y):
    return x**2+y**2
sum_square(3,4)
25
def <name> (<formal pargs>):
    return <return expression>

4. 函数环境与调用

在评估表达式的时,环境由一系列帧组成,每个帧都包含绑定,每个绑定都将一个名称与其对应的值相关联。只有一个全局帧。赋值和导入语句将条目添加到当前环境的第一帧。到目前为止,我们的环境仅包含全局帧。

环境图显示了当前环境的绑定以及名称所绑定到的值图像采用 pythontutor 在线演示工具制作)。

image.png

Python解释器处理自定义函数调用,Python解释器遵循以下计算过程,与任何表达式作用类似,解释器计算操作符和操作数表达式,然后把结果参数应用到命名函数中。

在应用自定义函数中,引入第二个本地帧,仅供此函数访问。

函数体的计算的环境包含两个帧,首先为包含形参绑定的本地帧,然后是包含其他的全局帧。每个函数实例都有自身独立的本地帧。

image.png

5. 函数设计

函数无论大小都是我们所有程序必要组成部分,是我们用编程语言表达计算过程的主要方法。到目前为止,我们已经讨论了函数的形式属性以及如何使用它们。现在我们来讨论如何构建良好的函数。从根本上说,所有好的函数都强化了函数是抽象的基本观念。主要具备以下特点

(1) 一个函数仅做一件事

(2)不要重复自己,软件工程核心思想

(3) 函数应该更加一般化。

6. 函数文档

函数定义通常包括描述函数的文档,称为文档字符串,文档字符串包含以下内容:

image.png

函数帮助:

help(mul)
注意:本站所有文章除特别说明外,均为原创,转载请务必以超链接方式并注明作者出处。 标签:函数,嵌套表达式,函数定义,函数环境,函数设计