python的变量,引用,对象,浅拷贝,深拷贝深度详解

本文深入探讨Python中的变量、对象和引用的概念,强调变量作为对象引用的特性。文章还区分了可变对象与不可变对象,并详细讲解了赋值、浅拷贝和深拷贝的区别。通过实例分析,阐述了如何通过is和==比较对象,以及None的特殊性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.   变量,对象和引用

(1)  变量,对象和引用的概念

Python中关于变量有三个概念需要明确,分别是变量,引用,对象。

  • 变量:python中的变量简而言之就是指针,变量总是存放对象的引用(或者说是对象的地址,id);

因此每个变量所需要的存储空间大小一致,与所指向的对象类型无关,因为每个变量都只是保存了指向对象的内存地址。

变量都没有类型(都是对象的引用),这意味着变量可以指向任何对象。

变量是分配在栈上,用来指向某一个对象。

变量分为可变变量和不可变变量;

  • 对象:对象就是分配的一块内存+存储的值;对象有id(地址),type(类型)和value(值)。

对象是分配在内存空间上,用来存放真正的数据。对象有类型,不同对象有不同的类型,如str,int等。不同对象根据存储的数据大小不同,所占用的内存空间也不同。

python中一切皆对象,一个列表,值,函数,类等都可以成为对象。

  • 引用:引用是建立了变量和对象之间的关系,即某个变量指向了某个对象(或者说指向某个内存空间),二者之间的关系便是引用。

因为变量是无类型的,它可以指向任何对象。同一个对象可能被多个变量引用(指向),因此会涉及一个对象引用计数,回收机制,以及引用同一个对象的不同变量之间的操作影响关系。

 

(2)   对象,变量,引用的关系

在代码message=‘hello world’中,python解释器完成了三件事:

  • 创建一个变量为message,它保存对象的地址;
  • 创建一个对象(字符串类型对象)并开辟一块存储空间,该对象的id是0x020,type是str,存储的value是hello world。
  • 将变量和对象,通过指针链接起来。从变量到对象的连接,成为引用(变量引用对象);语句message=‘hello world’即是引用,表明该变量指向该对象。

 

(3)  对变量的理解

 

<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值