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) 对变量的理解