【发布时间】:2018-07-31 01:36:37
【问题描述】:
According to my programming language class,使用词法作用域
的语言函数的主体是在 函数是定义的,而不是函数被调用的环境。
例如,SML 遵循以下行为:
val x = 1
fun myfun () =
x
val x = 10
val res = myfun() (* res is 1 since x = 1 when myfun is defined *)
另一方面,Python 不遵循这种行为:
x = 1
def myfun():
return x
x = 10
myfun() # 10 since x = 10 when myfun is called
【问题讨论】:
-
好问题。它帮助我找到、研究、理解(更好地)这件事。我添加了一个简短的答案,(i) 给出了一个实际的例子,(ii) 尝试消除围绕该主题的迷雾:stackoverflow.com/a/64000265/687896。如果您愿意,我将不胜感激您的 cmets。