CS61A: Structure and Interpretation of Computer Programs 笔记

发布时间 2023-09-27 18:15:19作者: yxu0528

Functions

Environment Diagrams:左侧为 Frames,右侧为 Objects。

Name 类似变量名,它们存储在 Frame 中,指向各种各样的 Objects,比如值或函数。一个 Name 同时只能指向一个 Object,但可以改变自身指向,不受“类型”影响(Name 根本没有固定的“类型”概念)。

Assignment 的过程是计算 '=' 的右值,全部算完后再与左值一一链接,进行赋值,这使得多重赋值得以实现。

image

Frames 中可能是一个 Global Frame,也可能是一系列 Local Frame 后面跟着 Global Frame。Global Frame 中存储着全局变量和各种 built-in(的 Name),Local Frame 由 User-defined Functions 创造,其 signature 即为函数的 <name>(parameters)。

在查找 Name 时,python 遵循就近原则,在最近的含有该 Name 的 Frame 中取得,如果都找不到则在 Global Frame 中寻找。

image

这是一个比较极端的例子,同时解释了函数调用时的 Environment Diagram 和 Name 查找关系。一旦进入函数体,所有的 'square' 都是在名为 square 的 Local Frame 里找到的,不会涉及 Global Frame 里那个指向 func square(square) 的 'square'。

TO BE CONTINUED