====== python变量 ======
----
===== 变量 =====
* 变量在被赋值的时候才创建
* 变量中不带有任何有关类型的信息(可以理解为一个指针)
* 变量是通用的,可以指任意一种数据类型
* 当变量被使用时,立即被替换成其所指的对象
* 变量在被使用前必须被赋值
**a=3 的具体过程如下**
- 创建一个对象代表指3
- 创建一个变量a(如果a之前没有被创建的话)
- 将变量和对象相连
----
===== 特殊变量 =====
* _xxx 不用'from module import *'导入
* __xxx__系统定义名字''
* __xxx 类中的私有变量名
----
====== 高级内容 ======
* 变量是一个系统表的元素,拥有存储对象地址的空间
* 对象是一块内存,有足够的空间去表示具体值
* 每个对象都有2个标准头部信息
* 对象类型标识符(类型属于对象,而不是变量)
* 引用计数标识符(引用计数为0的对象,可以被系统回收)
* Python允许多个变量指向同一个不可变对象(内部的优化)
* a=1;b=1;c=1其实只创建了一个对象1,和3个变量。因为对象1是不可变的,直接可以被复用
* 引用就是从变量到对象的指针
----
====== 共享引用和修改 ======
{{:pasted:20150324-133200.png}}
{{:pasted:20150324-133230.png}}
上图说明了大部分情况,但是如果变量a,b共享引用同一个列表或字典的话,假如a改变了列表或字典中的值,那b所指向的对象也会保持同步改变
----
====== 变量和对象的“相等”判断 ======
* is 用来判断同一个对象
* == 用来判断2个对象的值是否相等
a = [1,2,3]
c = b = [1,2,3]
a == b #true
a is b #false
c is b #true