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

问题如下:
image
environment过程如下:
image
代码部分如下:

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)
    image
example 8(判断错误率略高)
  • local frame中未返回的变量并不会影响到其他frame
    image
  • example 8 后的部分留在下节课讲解。
posted @ 2021-05-27 23:29  ikventure  阅读(491)  评论(0编辑  收藏  举报