首页 > 编程语言 >Python之可变对象及其引用、深拷贝和浅拷贝

Python之可变对象及其引用、深拷贝和浅拷贝

时间:2024-08-22 11:25:25浏览次数:10  
标签:变量 Python 列表 对象 引用 可变 拷贝

可变对象及其引用

Python中,

  • 变量名关联有值时才存在,如x=5
  • 变量名没有关联到特定的类型,类型有关联的对象觉得
  • 变量创建后即与特定的Python对象相关联
  • Python维护命名空间,其中改变名与变量关联。
    这种联系,称为“引用”,也就是变量名引用对象

当两个名字引用同一可变对象时,会怎样呢?
在以下例子中,通过“变量2=变量1”的方式创的新变量2,实际上时让变量2和变量1引用了同一个值。所以一旦值发生改变,另一个值也会变化。
在这里插入图片描述
如果希望复制一个列表,对列表操作但不影响原来的列表,可以使用分片的方法复制[:],或者copy()方法得到列表的副本。
在这里插入图片描述

深拷贝和浅拷贝

简单说就是:
浅拷贝只复制某个对象的引用,而不复制对象本身,新旧对象还是共享同一块内存。修改一个,会影响另一个。
深拷贝会创造一个一模一样的对象,新对象和原对象不共享内存,修改新对象不会改变原对对象。

对于列表来说。
list2=list1是浅拷贝
list2=list1.copy() 和list2=list1[:]是深拷贝

对引用可变对象的变量进行操作,可能会改变对象本身或创建一个新的对象。对引用不可变对象的变量进行操作,智慧创建新的变量。
在这里插入图片描述

标签:变量,Python,列表,对象,引用,可变,拷贝
From: https://blog.csdn.net/weixin_43325374/article/details/141423087

相关文章

  • Python之列表解决实际问题案例(字谜、文件分析)
    字谜文件分析1.《葛底斯堡演说》的长度2、有多少个不同的单词字谜字谜通过重新安排单词里的字母,来组成新的单词或词组。例如,将cinema转换成另一个英语单词iceman。在这个例子中,将设计一个程序,检查两个词是否构成字谜。如何做到这一点?做法是找出两个字谜单词所共享......
  • Python之列表的常用方法(添加删除排序等)
    一、列表的可变性二、列表方法1、不修改列表的方法2、修改列表的方法(1)添加(2)删除(3)列表排序(4)颠倒列表三、练习四、range、split和多重赋值五、使用join在列表和字符串之间转换一、列表的可变性在字符串中,不能直接去替换字符串中指定索引的值,需要使用切片和连接符。......
  • 关于C++函数返回值的拷贝优化问题
    在传统C++程序中,如果函数的返回值是一个对象的话,可能需要对函数中的局部对象进行拷贝。如果该对象很大的话,则程序的效率会降低。在C++11以后,出现的移动语义(MoveSemantic)及拷贝优化(CopyElision)都是解决这个问题的方法。本文试图以一个最简单的例子来说明这个问题。案例下面来看......
  • Python开发中,SQLAlchemy 的同步操作和异步操作封装,以及常规CRUD的处理。
    在我们使用Python来和数据库打交道中,SQLAlchemy是一个非常不错的ORM工具,通过它我们可以很好的实现多种数据库的统一模型接入,而且它提供了非常多的特性,通过结合不同的数据库驱动,我们可以实现同步或者异步的处理封装。1、SQLAlchemy介绍SQLAlchemy 是一个功能强大且灵活的Python......
  • Python中的常用的数据预处理所需工具
    Jupyter对于数据预处理的重要功能是支持用逐行编写和运行代码,实时查看结果。Jupyter是一个开源的交互式计算环境,它允许用户以网页的形式编写和运行代码,以及创建和共享文档,这些文档可以包含实时代码、方程、可视化和解释性文本。Jupyter的主要组件包括:1.JupyterNotebook:一......
  • 【Python脚本】刚度矩阵格式转换
    对于1-2-3坐标系:应力矩阵如下:\[\left.[\sigma]=\left[\begin{array}{ccc}\sigma_{11}&\sigma_{12}&\sigma_{13}\\\sigma_{12}&\sigma_{22}&\sigma_{23}\\\sigma_{13}&\sigma_{23}&\sigma_{33}\end{array}\right.\right]\]张量应变矩阵如下:......
  • python开发环境安装-包含Anaconda的安装配置和pycharm的安装
    一、需要得安装包1、 Anaconda3-5.3.0-Windows-x86_64.exe python环境2、pycharm-professional-2021.2.2.exe     开发工具3、ide-eval-resetter-2.1.13.zip            破解工具二、Anaconda安装Anaconda,中文大蟒蛇,是一个开源的Python发行版本。1......
  • 学Python必不可少的语言开发,程序员赶紧收藏!
      Python是一种广泛使用的高级编程语言,以其简洁易读的语法和强大的库支持而闻名。它支持多种编程范式,包括面向对象、命令式和函数式编程。Python的应用领域非常广泛,包括网络编程、数据分析、人工智能、机器学习、Web开发、自动化运维等。开发环境搭建安装Python:......
  • python configparser操作配置文件
    一、configparser概述configparser是Pyhton标准库中用来解析配置文件的模块;Python2.x中名为ConfigParser,3.x已改名为configParser二、配置文件的格式常见的配置文件后缀:.ini,.conf等,主要结构为包括以下的文本信息:sections(段)keys(properties\键)values(值)格式如下......
  • 提升代码迭代速度的Python重载方法使用详解
        概要在Python编程中,模块是组织代码的重要工具,它们使得代码更加模块化和易于维护。在开发和调试过程中,有时需要对已经导入的模块进行修改并重新加载以应用更改。Python提供了一个名为reload的模块,用于在不重新启动解释器的情况下重新加载已经导入的模块。本文将详......