【发布时间】:2017-04-02 18:02:43
【问题描述】:
我无法理解为什么我的代码会这样工作。现在,我正在初始化一个我设置为 0 的全局变量,所以如果我在函数之外的任何地方打印它,我应该得到 0。
当我在函数内打印 i 时,在调用该函数两次后得到 6 和 12。我认为这是因为全局 i 为 0,但某些局部 i 变量不是。但是,当我以i为参数调用reach_load时,我不是传入了i(0)的全局值吗?
import sys
d = {}
size_0 = sys.getsizeof(d)
i = 0
def reach_load(d, size_0, i):
size_0 = sys.getsizeof(d)
while size_0 == sys.getsizeof(d):
d[i] = i
i += 1
print(i)
reach_load(d, size_0, i)
reach_load(d, size_0, i)
【问题讨论】:
-
"但是,当我以 i 作为参数调用reach_load 时,我不是传入了 i (0) 的全局值吗?" - 是的,但是当你分配给它时,你并没有分配给全局。见nedbatchelder.com/text/names.html
标签: python