本文参考了以下资料:
Environment Diagrams
CS 61A Discussion1: Environment Diagrams, Control
Environment Diagrams 在线练习:
Visualize Python code execution
Environment Diagrams 是什么
environment diagram stores the variable names defined and the values they’ve been binded to so that you can look up easily.
环境图表保存了已定义的变量名以及它们所连接的数值,以便程序员查找它们。
Environment Diagrams are a visual tool to keep track of bindings and state of a computer program.
环境图表是一种记录(变量名)连接情况以及计算机程序状态的可视化工具。
Environment Diagrams 案例
示例代码
from operator import add
def kit(a):
def foo(b):
return a * tac(a, b)
return foo
tac = add
result1 = kit(2)(3)
Environment Diagram 示例,使用 http://www.pythontutor.com/visualize.html#mode=edit 制作
Environment Diagram 解析
为什么要使用 Environment Diagram ?示例代码将多个名称连接到同一个对象上,同时使用了函数的嵌套定义。此时很容易混淆不同名称、对象之间的对应关系。而在使用 Environment Diagram 之后,上述关系变得非常清晰。
例如,在计算return a * tac(a, b)
时,b
是函数的形参,容易找到;a
是从哪来的呢?从 Environment Diagram 中可以看到,foo()
的双亲帧(parent frame)是f1,而f1中有名字a
,连接到数值2
上,因此可以确定a=2
。