Python 的指针,有必要理解它

【导语】:这篇文章主要讲了Python中的指针,Python自动进行内存管理。开发者无需手动为对象分配内存,也不用在使用完对象后释放内存。但了解Python的内存管理机制,有助于开发者更好的编写代码。本文将介绍指针的概念,并对深拷贝进行解释。

简介

与C,C++这种静态语言相比,Python是自动管理内存的,它采用“引用计数”的方式管理内存,即Python内部会记录对象有多少个引用,如果某个对象的引用计数大于0,该对象就会一直存放在内存中;当对象的引用计数为0时,就会被垃圾回收机制回收。这也是Python的方便之处,开发者无需考虑提前为对象分配内存,使用完后也无需手动释放内存。

但了解Python内部是如何管理内存,也很有必要。你考虑过is和==有什么不同吗?或者为什么要使用深拷贝?你有考虑过Python是如何操作对象的吗?这篇文章或许会给你一些启示。

什么是指针,存在于哪里?

首先,我们要理解命名空间的概念。Python中的命名空间指的是一个作用域中所有变量、关键字和函数组成的列表,用于避免命名冲突,不同命名空间中可以包含相同的变量名。例如,每个命名空间中都有内置函数(如print()和str()),关键字(如None和True)。

当你创建一个新变量时,变量名会被添加到其所在作用域的命名空间中。例如,下面的代码会把变量名my_string添加到全局命名空间中:

my_string = "Hello World!"

本文我们不考虑作用域的问题,所有的案例都基于全局命名空间。

指针就是变量名——也就是Python命名空间的入口——与Python内存中的对象相对应。在上面的例子中,指针就是my_string,内存中的对象是“Hello World!”字符串。通过在命名空间中使用指针,我们就能访问和操作内存中的对象了。就像一个人可能有多个名字一样,多个指针也可能会指向同一个对象。

需要注意的是: 本文中提到的“指针”并不是 C 或 C++ 中的指针(更像是 C++ 中的引用)。使用 C 的开发者可以看看这篇文章[1]。

接下来,我们先创建一个列表,名称为my_list:my_list = ['string', 42]

变量名my_list指向的是列表对象。列表对象有2个指针,分别指向其中的2个元素。由此可以看出,当创建一个列表时,如果其中有元素,那么该列表也会包含指针,指向这些元素。因此,本文的许多例子将使用列表。

  • 21
    点赞
  • 99
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值