Python学习笔记--变量赋值过程
2013-08-03 16:00
666 查看
Python中,变量的赋值过程与C, C++, JAVA均是不同的。这几种语言都是先定义了一个变量,并在内存中为这一变量分配了空间,然后当赋值时,直接往这个空间写数据就可以了。所以变量的内存地址是不变的。
但Python的变量赋值过程更像是寻找映射或者说配对的过程,即变量名在一个空间,值在另一个空间,通过=将这两个空间连接起来。其实,如果将变量名看成C中的指针,更好理解。赋值过程首先是在内存中为值分配空间,并将值写进这个空间,然后通过=将变量名指向这个存了值的空间。Python中可以使用id()函数查看内存地址。在Python3.0以后,同一个常量在内存中会有多个地址,即内存中存了多个同一常量,当把常量值赋给变量时,则会随机选择一个存了这一常量值得地址给变量;如果内存中没有这个常量值,则会先在内存中生成常量,再将地址赋给变量。当某一变量值改变时,相当于将这个变量对应到另一个内存地址。
实际上,变量自身是没有地址的,变量的地址在Python中就是其指向的常量在内存中的地址。所以,直接使用i,而不给i赋值,语法上是通不过的,因为没有给变量i分配空间。
>>> i=2013
>>> id(i)
36580096
>>> i=2013
>>> id(i) #虽然i均为2013,但地址不一样
36559280
>>> j=2013
>>> id(j) #j与i也相同,但地址也不一样
36559616
>>> i=j
>>> id(i) #只有当使用i=j的时候,二者的地址才一样,这相当于将两个指针指向同一个内存地址
36559616
>>> id(2013)
36559280
>>> id(2013) #可以测试对于2013,内存中多处存了这一值
36580096
以上测试来自Python3.3。Python3.0以前的版本中,常量值在内存中好像是唯一的,未测试。
但Python的变量赋值过程更像是寻找映射或者说配对的过程,即变量名在一个空间,值在另一个空间,通过=将这两个空间连接起来。其实,如果将变量名看成C中的指针,更好理解。赋值过程首先是在内存中为值分配空间,并将值写进这个空间,然后通过=将变量名指向这个存了值的空间。Python中可以使用id()函数查看内存地址。在Python3.0以后,同一个常量在内存中会有多个地址,即内存中存了多个同一常量,当把常量值赋给变量时,则会随机选择一个存了这一常量值得地址给变量;如果内存中没有这个常量值,则会先在内存中生成常量,再将地址赋给变量。当某一变量值改变时,相当于将这个变量对应到另一个内存地址。
实际上,变量自身是没有地址的,变量的地址在Python中就是其指向的常量在内存中的地址。所以,直接使用i,而不给i赋值,语法上是通不过的,因为没有给变量i分配空间。
>>> i=2013
>>> id(i)
36580096
>>> i=2013
>>> id(i) #虽然i均为2013,但地址不一样
36559280
>>> j=2013
>>> id(j) #j与i也相同,但地址也不一样
36559616
>>> i=j
>>> id(i) #只有当使用i=j的时候,二者的地址才一样,这相当于将两个指针指向同一个内存地址
36559616
>>> id(2013)
36559280
>>> id(2013) #可以测试对于2013,内存中多处存了这一值
36580096
以上测试来自Python3.3。Python3.0以前的版本中,常量值在内存中好像是唯一的,未测试。
相关文章推荐
- python 学习笔记- 变量赋值
- Python开发学习笔记:Python多个变量同时赋值与多个变量分别单独赋值的不同
- Python学习笔记:02 基础:变量、整数、字符串、赋值、基本输出、注释、代码块
- python 变量赋值引用的一点学习笔记
- Python学习笔记--变量和赋值
- Python 基础学习笔记6- 多变量赋值
- Python学习笔记--变量和赋值
- python学习笔记之语言、调试、语法、变量、表达式
- python进阶学习笔记(六)——封装中的 @property,以及私有变量的说明(转载)
- python学习笔记2(变量)
- Python学习笔记——变量
- react native 语法ECMAScript 6 学习笔记----变量的解构赋值
- php——学习笔记,变量声明以及3种赋值方式
- Python学习笔记 —— 变量
- Python学习笔记(1)- 安装及变量
- python 学习笔记-变量作用域
- Python学习笔记(二)--变量和数据类型
- Python学习笔记一 基本语法、变量类型、时间处理
- python学习笔记-2.python变量和数据类型
- Python学习笔记(三):变量和数据类型