zoukankan      html  css  js  c++  java
  • 08_Python_直接赋值、深拷贝、浅拷贝

    1、直接赋值

    • 简单来说,直接赋值就是对象的引用(别名)。

    1.1、实例

    # 1、直接赋值
    a =  {1: [1,2,3]}
    b=a
    
    # 查看a、b在内存的地址
    print( 'a = ', id(a) )
    print( 'b = ', id(b) )
    
    #输出结果,可以看出他们的地址是一致的。
    
    '''
    a =  6909600
    b =  6909600
    '''
    

    2、浅拷贝

    • 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。

    2.1、浅拷贝实例

    a = {1: [1, 2, 3]}
    b = a.copy()
    
    a[1].append('c')  # 修改对象a中的数组对象
    
    print('a = ', a)
    print('b = ', b)
    
    '''
    通过输出结果可以看出,虽然a、b并不是独立存在的,修改a后,b中同样做了修改。
    
    a =  {1: [1, 2, 3, 'c']}
    b =  {1: [1, 2, 3, 'c']}
    '''
    
    

    3、深拷贝

    • 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。

    深拷贝是在另一块地址中创建一个新的变量或容器,同时容器内的元素的地址也是新开辟的,仅仅是值相同而已,是完全独立的一个副本。

    3.1、深拷贝实例

    import copy
    
    a = {1: [1, 2, 3]}
    # 深拷贝
    b = copy.deepcopy(a)
    
    a[1].append('c')  # 修改对象a中的数组对象
    
    print('a = ', a)
    print('b = ', b)
    
    '''
    通过输出结果可以看出,虽然a、b是独立存在的,a的修改不会影响b
    
    a =  {1: [1, 2, 3, 'c']}
    b =  {1: [1, 2, 3]}
    '''
    
  • 相关阅读:
    day15内置函数
    day14生成器进阶
    day13迭代器、生成器
    day12装饰器进阶
    day11装饰器
    day10函数进阶
    day9函数
    day8文件操作
    正则表达式
    初识递归
  • 原文地址:https://www.cnblogs.com/jasontang369/p/9243003.html
Copyright © 2011-2022 走看看