CS61A 学习笔记 lecture5 Environments
- 上节课结尾比较仓促,这节课开头补上对 函数组合 函数(function-combining function)的详细说明,topic则是environment表现。
- 08:30 开始补充 lecture 4 部分,17:00有课堂提问,17:30开始解答(正好解惑)
- 25:00 开始 lecture 5 Environments
lecture 4: generalize function-combining function
问题如下:
environment过程如下:
代码部分如下:
def combine_funcs(op):
def combined(f, g):
def val(x):
return op(f(x), g(x))
return val
return combined
from operator import add
add_func = combine_funcs(add)
from math import sin, cos, pi
h = add_func(sin, cos)
h(pi / 4)
注意:函数combine_funcs 返回的是一个函数combined,add_func = combine_funcs(add)
并没有对其进行调用,也没有传入combined的参数,所以environment过程中只进行到combined并直接返回,直到h = add_func(sin, cos)
才传入参数sin,cos;
同理,函数combine_funcs内部的函数combined返回的val也是一个函数,直到h(pi / 4)
才传入参数 pi / 4。
lecture 5: Environments
- 本课主要是举例说明函数定义、再定义、调用哪层定义等,按照pythontutor一步步执行。
example 6(判断错误率较高)
- 需要考虑recursion过程中的frame(global/local)
example 8(判断错误率略高)
- local frame中未返回的变量并不会影响到其他frame
- example 8 后的部分留在下节课讲解。