Python学习笔记--变量赋值过程
来源:互联网 发布:l女装淘宝店名 编辑:程序博客网 时间:2024/06/07 05:29
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学习笔记--变量赋值过程
- Python 变量赋值过程
- python笔记005--变量赋值
- Python学习(一)----变量与赋值
- Shell学习笔记---变量赋值与运算
- ES6学习笔记-变量解构赋值
- ES6学习笔记:变量的解构赋值
- Python学习笔记:02 基础:变量、整数、字符串、赋值、基本输出、注释、代码块
- 学习笔记--JS中变量的赋值(连续赋值)
- python---变量赋值
- python 变量 赋值
- 【python】变量赋值
- python变量赋值
- Python-变量赋值
- Python 学习笔记之变量
- Python学习笔记-清除变量
- python学习笔记之变量
- java基础学习笔记原始类型变量赋值与非原始变量赋值
- STL容器
- http://www.cppblog.com/lf426/archive/2010/06/25/118739.html
- 【jquery mobile笔记一】data-role="fieldcontain"
- 模板方法模式(Template Method)
- openstack-keystone
- Python学习笔记--变量赋值过程
- Ubuntu配置远程VNC远程桌面服务
- android中activity 生命周期说明
- EJB原理
- VIJOS P1351 棋盘制作
- 为C6713建立一个简单的工程
- URAL 1169. Pairs 图中抽象出数学公式dfs
- 谈Objective-C Block的实现
- HDU--杭电--1195--Open the Lock--深搜--忘记说句话装逼了,都是什么双向广搜,不知道怎么想的,直接就是一个深搜的水题好不好?