内存分配python代码

时间:2016-04-20 13:51:04

标签: python memory-management

我遇到了这个问题:

def f(x,l=[]):
    for i in range(x):
        l.append(i*i)
    print(l) 

f(2)
f(3,[3,2,1])
f(3)

答案是:

[0, 1]
[3, 2, 1, 0, 1, 4]
[0, 1, 0, 1, 4]

说明: 第一个函数调用应该相当明显,循环将0和1附加到空列表l。 l是指向存储在内存中的列表的变量的名称。第二个调用通过在新的内存块中创建新列表开始。然后引用这个新列表。然后它将0,1和4附加到此新列表中。这太好了。第三个函数调用是奇怪的。它使用存储在原始内存块中的原始列表。这就是它从0和1开始的原因。

我的要求:在哪里可以找到更多关于为什么以及如何为我这样的新手提供信息的信息。即使有上述答案我也无法理解最后一次函数调用。

提前感谢您的回复。

0 个答案:

没有答案