1. 定义时必须指定数据类型( int 、 float 、 char ),确定这块内存多大、怎么解析二进制。2. 变量名直接对应内存地址,变量就是内存本身。赋值是把数据拷贝进这块内存。int a = 10; // 在内存开辟4字节空间,名字a绑定这块内存,存入10a = 20; // 修改这块内存里面存放的值
3. 类型不能改变, a 永远是int,不能存字符串。4. 赋值 b = a :值拷贝,把a内存里的数据复制一份给b,a、b是两块独立内存,互不干扰。Python的变量本质:标签/引用(指针),不是盒子。1. 不需要声明类型;数据对象在堆内存,变量只是贴在对象上的标签。a = 10 # 10是内存中的整数对象;a只是标签,指向这个对象a = 20 # 不是修改原来10的内存!让标签a改贴到新对象20上
2. 变量可以随时贴到不同类型对象: a=10; a="hello" 完全合法。3. 赋值 b = a :标签拷贝,不复制数据。a、b两个标签指向同一个对象。修改可变对象会互相影响。lst1 = [1,2]lst2 = lst1lst2.append(3)print(lst1) # [1,2,3],两者指向同一个列表对象
Python:变量=便利贴,贴对象;赋值只是把便利贴撕下来贴去别的对象。Python中,数字、字符串是不可变对象,看起来像C的拷贝,只是因为修改时会生成新对象;列表字典是可变对象,引用共享效果会暴露出来。