返回值
问题描述:
>>> 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。 Therefeore,if name =='main':function,print(“LINE D:”,x)假设打印由之前调用的方形(x)返回的x。但由于某种原因,情况并非如此,我做错了什么?还是我的理解是不正确的?
P.S.我并不是完全想要纠正这个功能。我只是找到一个解释,为什么它以这种方式工作。
答
python中的每个函数都有自己的作用域。在这种情况下,square
中的x
与主要中的x
不同。当您致电square(x)
时,main中的x
被复制到方块中的x
。 square
中的x = x*x
声明仅更新本地x
。
您需要改写'x = square(x)'。 – fenceop 2014-12-07 20:10:18
我并不是完全想要纠正这个功能。我只是找到一个解释,为什么它以这种方式工作。 – amundi12 2014-12-07 20:13:39
'square()'函数不直接操作驻留在main()中的'x'变量。相反,它会复制其值并将其分配给也称为“x”的局部变量。 'x'(main)保持不变,除非你给它赋予'square(x)'的返回值。 – fenceop 2014-12-07 20:21:02