【Python】内存、引用、驻留

简介: 【Python】内存、引用、驻留

1、变量皆是标签


如图所示,ab皆是便利贴,皆是标注,皆是引用。为什么这么说呢,代码复现一下。

1684134414645.jpg

如图可知,当向b中添加元素4时,a也产生了变化。并且ab前后的id值是没有产生任何变化的。面对这种现象,我们也把a或b叫做别名,他们都表示同一块内存地址。

1684134437720.jpg

1684134445069.jpg


2、引用分配给对象,而不是把对象分配给引用


为什么这么说呢?打个比方,a、b就像是人员分配,我们总是会把人员分配到地方,那么这个地方一定是一个既成事实。在python代码中同样如此,复现一下:

1684134457233.jpg

可以看出,赋值语句的右边先执行,先创建再赋值。那么此时是先实例化对象创建既成事实,再把引用分配给对象

1684134464287.jpg


3、==和is之间的不同


==:对比value是否相同 ; is:对比id是否相同。python代码复现一下:

1684134480542.jpg

好,可以看出确实如此。为什么此处值相同,id却不同呢。下面第4点会做出解释

1684134493458.jpg


4、内存驻留机制


结论:当值是不可变类型且存在这个值时,会直接引用。否则开辟新内存创建。这是因为python对不可变数据类型的驻留机制,它是一个python底层实现的内存优化机制。python代码复现一下:

1、当值为不可变类型时:

1684134504039.jpg

1684134513295.jpg

2、当值为可变类型时:

1684134523827.jpg

1684134534568.jpg

相关文章
|
1天前
|
数据处理 Python
如何优化Python读取大文件的内存占用与性能
如何优化Python读取大文件的内存占用与性能
11 0
|
1天前
|
数据处理 Python
Python读取大文件的“坑“与内存占用检测
Python读取大文件的“坑“与内存占用检测
8 0
|
23天前
|
算法 程序员 Python
程序员必看!Python复杂度分析全攻略,让你的算法设计既快又省内存!
在编程领域,Python以简洁的语法和强大的库支持成为众多程序员的首选语言。然而,性能优化仍是挑战。本文将带你深入了解Python算法的复杂度分析,从时间与空间复杂度入手,分享四大最佳实践:选择合适算法、优化实现、利用Python特性减少空间消耗及定期评估调整,助你写出高效且节省内存的代码,轻松应对各种编程挑战。
29 1
|
1月前
|
并行计算 开发者 Python
高效利用Python中的生成器提高内存管理
在处理大量数据或执行复杂计算时,内存管理成为关键问题。Python中的生成器(Generators)提供了一种优雅的解决方案,通过惰性计算和节省内存的方式显著提高程序的效率。本文将探讨生成器的基本概念,实际应用场景,以及如何利用生成器优化内存使用和提高程序性能。
|
1月前
|
监控 Ubuntu API
Python脚本监控Ubuntu系统进程内存的实现方式
通过这种方法,我们可以很容易地监控Ubuntu系统中进程的内存使用情况,对于性能分析和资源管理具有很大的帮助。这只是 `psutil`库功能的冰山一角,`psutil`还能够提供更多关于系统和进程的详细信息,强烈推荐进一步探索这个强大的库。
35 1
|
22天前
|
Python
python对电脑的操作,获取几核,获取操作系统,获取内存
python对电脑的操作,获取几核,获取操作系统,获取内存
|
2月前
|
存储 程序员 Python
Python类的定义_类和对象的关系_对象的内存模型
通过类的定义来创建对象,我们可以应用面向对象编程(OOP)的原则,例如封装、继承和多态,这些原则帮助程序员构建可复用的代码和模块化的系统。Python语言支持这样的OOP特性,使其成为强大而灵活的编程语言,适用于各种软件开发项目。
22 1
|
2月前
|
Python
Python变量的作用域_参数类型_传递过程内存分析
理解Python中的变量作用域、参数类型和参数传递过程,对于编写高效和健壮的代码至关重要。正确的应用这些概念,有助于避免程序中的错误和内存泄漏。通过实践和经验积累,可以更好地理解Python的内存模型,并编写出更优质的代码。
23 2
|
2月前
|
Java Python
Python 中的内存管理
【8月更文挑战第29天】
28 1

热门文章

最新文章