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

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

时间:2024-08-22 11:25:25浏览次数:19  
标签:变量 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中的常用的数据预处理所需工具
    Jupyter对于数据预处理的重要功能是支持用逐行编写和运行代码,实时查看结果。Jupyter是一个开源的交互式计算环境,它允许用户以网页的形式编写和运行代码,以及创建和共享文档,这些文档可以包含实时代码、方程、可视化和解释性文本。Jupyter的主要组件包括:1.JupyterNotebook:一......
  • 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的模块,用于在不重新启动解释器的情况下重新加载已经导入的模块。本文将详......