未使用的返回值

时间:2014-12-07 20:07:22

标签: python-3.x

>>> def square(x):
        print('LINE A:', x)
        x = x*x
        print("LINE B:", x)
        return x


>>> if __name__ == '__main__':
        x = 5
        print("LINE C:", x)
        square(x)
        print("LINE D:", x)
        square(x + 1)
        print("LINE E:", x)

产地:

LINE C: 5
LINE A: 5
LINE B: 25
25
LINE D: 5
LINE A: 6
LINE B: 36 
36
LINE E: 5

根据我的理解,它应该返回以下内容:

LINE C: 5
LINE A: 5
LINE B: 25
25
LINE D: 25
LINE A: 25
LINE B: 676 
676
LINE E: 676

在第一个(顶部)函数中,我将参数x赋值为x * x。然后,在if 名称 ==' 主要':功能中,打印(" LINE D:",x)假设打印由先前调用的square(x)返回的x。但由于某些原因情况并非如此,我做错了什么?或者我的理解是不正确的?

P.S。我并不是在寻求纠正这个功能。我只是找到解释为什么它以这种方式工作。

1 个答案:

答案 0 :(得分:0)

python中的每个函数都有自己的作用域。在这种情况下,x中的square与主要中的x不同。当您致电square(x)时,来自main的x会被复制到方格中的xx = x*x中的square语句仅更新本地x