您的位置:首页 > 编程语言 > Python开发

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 测试