DEV Community 中文 关注 Python 的内存模型并非你所想的那样 Python 变量是对象的确切名称绑定,而非值的容器。这一区分对于理解可变性、函数参数和别名至关重要。与常见的“盒子”隐喻不同,Python 中的名称仅仅是附加在内存中独立存在的对象上的标签。多个名称可以指向同一个对象,而无需创建副本。赋值会创建一个新的绑定,实质上改变了名称所引用的对象。可变性修改了现有名称所指向的对象,从而影响所有引用该同一对象的其他名称。对可变类型(如列表)的增强赋值也会就地修改该对象。然而,对不可变类型(如整数)的增强赋值会将名称重新绑定到一个新对象。这种行为显著影响数据传入函数及被函数修改的方式。在函数内部创建新对象与修改现有对象之间的差异,会导致原始变量产生不同的结果。理解这一模型对于正确预测代码行为至关重要,尤其是在默认函数参数等复杂场景中。默认参数 [] 会在定义时创建单个列表对象,随后在多次调用中被修改。建议通过代码追踪练习来建立应用此思维模型的准确性。 Python's Memory Model Is Not What You Think It Is dev.to DEV Community 中文 RSS thenote.app
[]会在定义时创建单个列表对象,随后在多次调用中被修改。建议通过代码追踪练习来建立应用此思维模型的准确性。