输出不是我认为的应该是

时间:2016-07-28 22:07:26

标签: python

这是我在网站上的第一个问题,我非常感谢任何反馈。我正在麻省理工学院的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()

1 个答案:

答案 0 :(得分:0)

以下是我的解释:

  1. x设置为3
  2. 使用输入x = 3 调用
  3. f
  4. 然后,x=x+1将x(局部变量)设置为4。
  5. 第一张打印件打印x = 4
  6. 回答您的疑虑:

    1. x 是f的局部变量,因为f将x作为参数。
    2. f在打印x z = f(x)之前调用f,并返回函数(g)。
    3. z()行不会调用f。它调用f返回的函数return g