我正在尝试用不同的参数调用函数。现在,我从Python (Python教程4.7.1 )中了解了这一点。定义函数)--函数累加在后续调用时传递给它的参数。由于这一点,在第一次调用之后,我期望函数中的list对象的id()保持不变,但它不是。为什么id()'s不同?
def f(a, L=[]):
print(id(L))
L.append(a)
return L
>>> f(1)
2053668960840
[1]
>>> f(1)
2053668960840
[1, 1]
>>> f(1,[9])
2053668961032
[9, 1]
>>> f(1,[9])
2053669026888
[9, 1]
>>> f(1,[9])
2053668961032
[9, 1]
>>> f(1,[9])
2053669026888
[9, 1]发布于 2018-03-22 21:35:54
默认参数在创建时绑定到函数,它始终是内存中的同一个对象。这就是为什么每次调用函数时都会看到相同的id,而不提供第二个参数。
当使用第二个参数调用函数时,在刚刚创建的列表中,在执行任何其他代码之前,赋值L=<list called with>隐式地发生在函数体内。在本例中,您可以看到新创建的列表的id。
https://stackoverflow.com/questions/49438837
复制相似问题