p22 P23 p24 p25 p26
综述课引言
- 黑盒抽象将计算的细节和计算的使用分开。是的我们更容易调试算法和程序。构造复杂函数
- 引进环境的形式,可视化处理。观察使用python解释器的函数。我们如何用这些方法把新算法概念化
- 获得能力将任意计算转化为函数,将函数作为其他计算的组成部件,计算思维的重要元素
前言
- 我们面临的问题是什么呢
- 我们的代码缺乏抽象性
- 一个变量名没办法在不同脚本之间公用
- 每次想使用代码都要重新载入文件
- 一旦程序出了bug就要不断搜索这个代码,很难维护
函数把代码包装起来使得维护和应用变得简单
- 怎么从机械的角度来思考函数运作的方式,如何把正确的数值存储在正确的位置?
- 使用环境的概念
概念
-
函数定义
def < function name>(< formal parameters>):
< function body> -
函数返回值,如果不返回,会自动产生None返回
-
环境
- 一套形式体系,用于追踪变量和数值的绑定关系
- 将名称和表达式绑定的配对放到一张表中,我们就叫它环境
-
python shell就是一个全局环境
-
环境指针
-
调用函数的时候,局部环境是怎么发挥封装作用的?
函数的封装叫做静态辖域(static)
应用
- 求最大值
def max(x,y):
if x>y:
return x
else:
return y
-
用环境来做一下循环
-
假设想把某些数字的指数换成其他数字,计算新的乘幂
用函数实现 -
这个简单的函数定义例子可以帮我们理解为什么明明函数里外的变量名一样,却无法直接调用函数里面的变量名,并且函数内外不会冲突的事实
P26. 的3:54对函数的内外差异进行了最易懂的说明
总结
我们学习了函数如何模块化处理,进行真正的抽象。
利用环境的定义帮助我们传送参数,对他们进行绑定
了解到可以对变量名称建立局部绑定,不同于全局绑定