Python中一切皆对象,这节主要内容如下:
变量命名规则
变量赋值
变量与内存
2. 1. 变量名
Python中变量名遵循下面规则:
1)字符或者下划线开头;
2)由字符和数字下划线组成;
3)变量名对大小写敏感;
4)不能和关键字重名(关键字:例如 if,while等);
正确变量名:x, y, _tmp1, tmp, check_flag;错误变量名:1x,if, @s,
2. 变量赋值
Python是动态解释性语言,赋值时候不需要指定变量类型。
变量赋值实质:
1)创建对象;
2)将变量名和对象进行绑定;x = 10, 如果10这个对象不存在,python解释器创建对象10,然后将x指向这个对象;对象决定了类型,变量没有类型,只是一个指针;
引用:变量赋值就是一个引用过程,赋值过程是变量名和对象进行绑定,变量名修改时进行解绑定;
好处:当多个变量同时指向一个对象时,减小内存开销;
坏处:增加了绑定和解绑定过程,消耗极少时间;变量赋值类型:
1)直接赋值:
x = 10
2)增量赋值:
x += 20
3)多重赋值:
x = y = z = 10
4)多元赋值:
x, y = 10, '10' 等于 x = 10, y = '10'
3. 变量与内存:
变量和内存关系:
1)定义两个变量x, y,赋予相同的整数值10,
2)然后修改y的值,使用id方法观察变量指向地址变化;>>> x = 10>>> id(x) #id方法:得到对象的地址1351918976>>> y = 10>>> id(y)1351918976>>> id(10)1351918976>>> y=20>>> id(y)1351919296>>> id(x)1351918976>>>
从上面的例子中我们发现:
1:x,y同时指向变量10且内存地址是相同的;
2:当我们修改y值后,y指向地址发生变化;但是x没有变化;
需要注意,这种赋值方式只适用于占用内存较小的变量、字符串等,当我们是使用浮点做下实验就会得到不同结果,这与Python内存管理机制有关系:>>> m = 3.14>>> n = 3.14>>> id(m) # m和n的值形同,但是地址不同2013662155904>>> id(n)2013662157488>>>
内存回收机制:
问:如果我们不断赋值,变量会不会太多导致内存不够?
回答:当我们对变量进行赋值时,赋值对象的引用计数会加1,当我们修改变量或者变量作用域小时时候,引用计数减1,当对象的引用计数为0时,python解释器会释放这个对象,对内存进行回收。
总结:
掌握知识点:
1:变量命名规则
2:变量的赋值形式
了解知识点:
Python内存管理
共同学习,写下你的评论
评论加载中...
作者其他优质文章