变量:存储
对象保存在内存中
当我们查看变量的类型时,其实确切地说查看的是对象
的类型。
变量保存的是对象的引⽤
students = ['⼩明']
print(id(students))
students.append('⼩花')
print(id(students))
想⼀想:上述代码中两次输出结果⼀样吗?
每创建⼀个变量,都开辟⼀个新的空间,将值的地址赋
值给变量
(例外:简单的数字、简单的字符串)
students = ['⼩明']
print(id(students))
students = ['哈利波特']
print(id(students))
想⼀想:上述代码中的两次输出结果相同吗?
对象:引用
- 多个变量可以引⽤同⼀个对象
- list中的每⼀个元素其实是每⼀个对象的引⽤
- 可以使⽤is来判断两个引⽤所指的对象是否相同
- Python中函数的参数传值使⽤的是引⽤传值(参数的内
存地址)
Python中的赋值是把对象的引⽤赋值给变量
Python中的传参其实就是赋值
函数中的参数其实就是放在函数括号中的变量
变量:可变和不可变
可变的变量可被修改 eg: list
不可变的变量不可修改 eg:str
Python中的内存管理
-
Python中的所有数据都保存在内存中的⼀个”私有堆“中
堆:⼀种特殊的内存块print(locals())
试⼀试:上述代码会输出什么结果?
Python堆的管理是由解释器本身管理的,开发者⽆法控
制
Memory management in Python involves a private heap
containing all Python objects and data structures. The
management of this private heap is ensured internally
by the Python memory manager. The Python memory
manager has different components which deal with
various dynamic storage management aspects, like
sharing, segmentation, preallocation or caching