>>> 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。我并不是在寻求纠正这个功能。我只是找到解释为什么它以这种方式工作。
答案 0 :(得分:0)
python中的每个函数都有自己的作用域。在这种情况下,x
中的square
与主要中的x
不同。当您致电square(x)
时,来自main的x
会被复制到方格中的x
。 x = x*x
中的square
语句仅更新本地x
。