Advertisement

python可变与不可变对象、函数传参

阅读量:

文章目录

    • 可变对象与不可变对象
    • 对象地址共享
    • 函数传参

可变对象与不可变对象

在Python程序中对物体进行分类时会遇到两种主要类型:一类是可以被修改的对象称为可变异体另一类则是无法被修改的对象称为非可变异体以下分别介绍这两类的具体表现形式及其特点


对象地址共享

对于无法被修改的对象(例如数字、字符或None)进行声明时:如果这些对象的值相同,则它们的内存地址也必定相同。例如,在Python中,默认情况下整数和字符串被视为不可变类型。

复制代码
    a=1 / "abc" / None
    b=1 / "abc" / None
    # 那么id(a)=id(b)    

并且如果你反复运行上述代码,则每次得到的a和b对象的id与上一次是一致的。
即使你尝试使用深拷贝b = copy.deepcopy(a)或者将b定义为b = 1 + 0 / ('ab') + 'c'等方式也无法解决问题。
这表明不可变类型如数字、字符或None(但不包含元组)会共享内存地址。
这时这些地址被视为固定不变——一旦某个值被赋存于某个内存位置,则所有引用该值的对象都将指向同一个固定位置。

对于可变更的数据容器(如常见的字典类型、数组结构或自定义的类字段)以及无法更改其属性值的元组

全部评论 (0)

还没有任何评论哟~