我想完全理解"Stack Diagram" principle。有人可以检查我是否正确吗?
到目前为止,我的理解是堆栈图使用来跟踪代码中函数中使用的变量。
但是我不确定是否在某个函数中创建了一个新变量,如果它包含在堆栈图中。
例如,我们应该在堆栈图中包含变量“p”吗?让我们说:
def g(y):
p = A(y, y)
print z, p
return p
def A(x, y):
x = x + 1
return x * y
x = 1
y = x + 2
我想我的堆栈看起来应该是这样的:
<module> x --> 1
y --> 3 (Should I put 3 or x + 2 here)
fct g y --> 3 (should I stop here or should I include a line for the variable p)
fct A x --> 4
y --> 3
最后一个问题是:我们是否应该提及有关其他功能的功能。与函数A的情况一样,它返回x * y = 12.我们是否应该在堆栈图中包含它,或者图表是否正确?
由于
答案 0 :(得分:3)
根据堆栈图的定义:
每个函数由一个框架表示。框架是一个框架 旁边的函数名称以及函数的参数和变量 在里面发挥作用。
这意味着您还需要考虑在函数中定义的变量。最好将 y 的值保持为y=3
而不是y=x+2
- 因为我们跟踪变量值并且通常不关心如何获得这些值
要回答您的第二个查询 - 从描述中可以看出堆栈图主要用于跟踪变量到函数名称的映射。但是,请记住,当开发语言处理器和运行时时,它们确实对所提出的堆栈图原理进行了必要的补充,这使得处理变量或识别错误变得容易或有效。
希望这篇文章澄清你的怀疑