====== 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