Python在heap中分配的对象分成两类:可变对象和不可变对象。所谓可变对象是指,对象的内容是可变的,例如list。而不可变的对象则相反,表示其内容不可变。
- 不可变对象:int,string,float,tuple
- 可变对象 :list,dictionary
一、不可变对象
由于Python中的变量存放的是对象引用,所以对于不可变对象而言,尽管对象本身不可变,但变量的对象引用是可变的。运用这样的机制,有时候会让人产生糊涂,似乎可变对象变化了。如下面的代码:
i = 73
i += 2
从上面得知,不可变的对象的特征没有变,依然是不可变对象,变的只是创建了新对象,改变了变量的对象引用。
看看下面的代码,更能体现这点的。
#因为258是int对象,是不可变对象的。所以下面3个id的值都是一样的,最后一句的结果也是为True
#有点奇怪的是为什么在IDLE,和在脚本执行的结果不太一样。所以下面的代码请在脚本中执行。
print(id(258))
a = 258
print(id(a))
b = 258
print(id(b))
print(a is b)
二、对于可变对象
其对象的内容是可以变化的。当对象的内容发生变化时,变量的对象引用是不会变化的。如下面的例子。
m=[5,9]
m+=[6]
- 大小: 104.4 KB
- 大小: 185.1 KB
分享到:
相关推荐
在Python编程语言中,对象分为可变对象和不可变对象,这一特性对于理解和优化代码有着重要的影响。可变对象在创建后可以改变其内容,但其内存地址不变,这意味着变量始终指向同一对象;相反,不可变对象一旦创建,就...
在Python编程语言中,对象分为可变对象和不可变对象,这一特性对于理解Python的工作原理至关重要。可变对象和不可变对象的区别在于它们的值是否允许在创建后进行更改。 不可变对象包括数字(int、float、complex)...
Python中,数值类型(int和float)、字符串str、元组tuple都是不可变类型。而列表list、字典dict、集合set是可变类型。 还是看代码比较直观。先看不可变对象 不可变对象的例子 先说明一点is 就是判断两
而不可变类型(Immutable types),指的是对象的内容一旦创建后就不能被改变,如果要修改,Python会重新在内存中创建一个新的对象来存储新的值,原对象保持不变。不可变类型包括整数(int)、浮点数(float)、字符...
- **函数式编程**:在函数式编程中,不可变性是基础,因为它确保函数没有副作用,使代码更易于理解和测试。 - **并发安全**:在多线程或协程环境中,不可变数据可以避免竞态条件,提高代码的并行性。 5. **使用...
4. **列表、元组和集合**:讲解这些可变和不可变的序列类型,包括元素的增删改查、切片操作、索引和切片以及内置的列表方法。 5. **字典**:介绍键值对存储的数据结构,如何创建、访问和修改字典,以及字典的方法和...
在学习Python集合时,还需要了解其可变性和不可变性。集合本身是可变的,可以添加和删除元素,但其元素必须是不可变的,如整数、浮点数、字符串和元组。如果试图将可变对象(如列表)添加到集合,会引发错误。 在...
#### 认识 Python 和基础知识 - **Python 的发展历史**: - **起源**:Python 由 Guido van Rossum 创建,他在1982年获得数学与计算机硕士学位后,对编程产生了浓厚的兴趣。 - **背景**:在1980年代,由于个人电脑...
总结来说,Python的对象引用允许变量共享同一块内存,可变性和不可变性决定了对象的内容是否可改变,垃圾回收机制则负责高效地管理内存。了解这些概念对于编写高效、无内存泄漏的Python代码至关重要。在实际编程中,...
- **不可变序列**:解释元组作为不可变序列的特点和应用场景。 #### Python第53课:数学运算 - **数学函数**:介绍Python内置的数学函数,如三角函数、指数函数等。 #### Python第54课:真值表 - **布尔逻辑运算...
文件操作是Python编程中不可或缺的部分,包括读取、写入和追加文件。Python提供了丰富的内置函数,如open()、read()、write()等,使得文件操作变得简单易行。 面向对象编程(OOP)是Python的另一个核心特性,它通过...
- 元组:不可变序列,常用于表示固定集合。 - 字典:键值对存储,快速查找和修改元素。 3. **字符串处理**: - 字符串方法:如split(), join(), replace(), strip()等,用于处理和操作字符串。 - 格式化输出:...
### Python面向对象编程知识点解析 #### 一、面向对象三大特性及作用 **1. 封装** 封装是面向对象编程中的一个重要概念,它通过隐藏类的内部细节并对外提供公共接口来保护数据的安全性和完整性。封装使得类的使用...
如果函数收到的是一个不可变对象的引用,就不能直接修改原始对象——相当于通过“传值’来传递对象。 2. 当人们复制可变对象时,就复制了可变对象的引用,如果改变引用的值,则修改了原始的参数。 3. 为了简化内存...
这本书涵盖了Python的基础语法、数据结构、函数、类和对象,以及文件操作、异常处理等核心概念。通过阅读本书的笔记与习题整理,读者可以深入理解Python编程的核心知识点,并通过实际练习来巩固所学。 1. **Python...