Python类初始化和内存模型行为

Python类初始化和内存模型行为,python,Python,我知道这已经被记录在堆栈溢出的某个地方,但我一辈子都找不到它。。。我很乐意接受任何相关链接 我有以下代码: class A: def __init__(self, x=[]): x += [1] print id(x), x print "Try with default:" a = A() b = A() c = A() d = A() print "Try with custom:" a = A([1]) b = A([2]) c = A([3])

我知道这已经被记录在堆栈溢出的某个地方,但我一辈子都找不到它。。。我很乐意接受任何相关链接

我有以下代码:

class A:
    def __init__(self, x=[]):
        x += [1]
        print id(x), x

print "Try with default:"
a = A()
b = A()
c = A()
d = A()

print "Try with custom:"
a = A([1])
b = A([2])
c = A([3])
d = A([4])
这将生成以下输出:

Try with default:
4342272584 [1]
4342272584 [1, 1]
4342272584 [1, 1, 1]
4342272584 [1, 1, 1, 1]
Try with custom:
4342456688 [1, 1]
4342456688 [2, 1]
4342456688 [3, 1]
4342456688 [4, 1]
为什么在使用默认构造函数值时,数组会在每次后续构造中增长?

提供了一个链接,回答了以下问题:


该链接的公认回答指向以下有用的解释:

您要查找的单词是“可变默认参数”。谷歌它,或阅读,例如,.Perfect!这些就是我需要的词语和链接。谢谢@agf!