zoukankan      html  css  js  c++  java
  • python学习——拷贝相关概念

    概念

    在python中,对象赋值实际上是对象的引用。拷贝一般有三种方法:

    1. 直接赋值
    2. 浅拷贝
    3. 深拷贝

    区别

    直接赋值:传递对象的引用,原始列表和赋值列表都可以改变列表的值。

    1 >>> a = [1,2,3,4,5]
    2 >>> b = a
    3 >>> b.append(6)
    4 >>> b
    5 [1, 2, 3, 4, 5, 6]
    6 >>> a
    7 [1, 2, 3, 4, 5, 6]

    浅拷贝:父对象已经是全新的了,子对象还是指向同一个对象(id相同),改变子对象还是对全部对象都有影响。

     1 >>> import copy
     2 >>> a = [1,2,3,[4,5]]  
     3 >>> b = copy.copy(a)
     4 >>> a[3].append(1)
     5 >>> a
     6 [1, 2, 3, [4, 5, 1]]
     7 >>> b
     8 [1, 2, 3, [4, 5, 1]]
     9 >>> id(a[3]) 
    10 140729508644408
    11 >>> id(b[3])
    12 140729508644408

    深拷贝:父对象和子对象都是全新的了(id不同),改变其中一个不会对别的对象造成任何影响。

     1 >>> a
     2 [1, 2, 3, [4, 5, 1]]
     3 >>> b = copy.deepcopy(a)
     4 >>> b
     5 [1, 2, 3, [4, 5, 1]]
     6 >>> a[3].append(2)
     7 >>> a
     8 [1, 2, 3, [4, 5, 1, 2]]
     9 >>> b
    10 [1, 2, 3, [4, 5, 1]]
    11 >>> id(a[3])
    12 140729508644408
    13 >>> id(b[3])
    14 140729508644768
  • 相关阅读:
    springmvc 处理静态资源
    springmvc jsp 获取 上下文
    springmvc 如何设置首页
    servlet-mapping url-pattern / 和 /*区别
    nginx支持php
    openresty 变量
    git tag用法
    python 导入模块,__init__.py 的作用
    python 转码问题
    python装饰器
  • 原文地址:https://www.cnblogs.com/gforce/p/6223944.html
Copyright © 2011-2022 走看看