默认参数列表对于所有实例都是相同的对象吗?你知道吗
class X():
def __init__(self,a=[]):
self.member=a
print id(a)
k=X([1,2,3])
g=X([1,2,3])
t=X()
h=X()
结果让我吃惊:
140072782781832
140072782901976
140072782816536
140072782816536
如您所见,当a等于[1,2,3]时,id是不同的,但当a为空时,id保持不变。但是,如果我删除自我成员,现在代码如下所示:
class X():
def __init__(self,a=[]):
print id(a)
k=X([1,2,3])
g=X([1,2,3])
t=X()
h=X()
输出如下:
140033294171528
140033294171528
140033294206232
140033294206232
当a等于[1,2,3]时,id保持不变。你知道吗
我完全糊涂了。。。有人能解释吗?你知道吗
是的,这就是为什么你要这么做
编辑:
我要指出的是
也给予
所以我希望答案是“如果你创建一个列表,删除它,再创建另一个列表,很有可能它会重用相同的分配内存位置”。你知道吗
相关问题 更多 >
编程相关推荐