这是我在网站上的第一个问题,我非常感谢任何反馈。我正在麻省理工学院的Guttag工作的那本书说,该程序将打印以下内容:
x=4
z=4
x = abc
x=4
x=3
z = <function g at 0x15b43b0>
x = abc
我的问题是,为什么显示的第一个x的值为4,它是 绑定到3,并在调用函数之前打印,并且在 主要名称空间,不是本地功能。如果有人可以解释,请 我为什么打印的输出是什么,这将是非常有帮助的,提前谢谢。
def f(x):
def g():
x = 'abc'
print 'x =', x
def h():
z=x
print 'z =', z
x=x+1
print 'x =', x
h()
g()
print 'x =', x
return g
x=3
z = f(x)
print 'x =', x
print 'z =', z
z()
答案 0 :(得分:0)
以下是我的解释:
x=x+1
将x(局部变量)设置为4。回答您的疑虑:
z = f(x)
之前调用f,并返回函数(g)。z()
行不会调用f。它调用f返回的函数return g
。