Python中一切皆对象,这节主要内容如下:
1. 变量命名规则
2. 变量赋值
4. 变量与内存
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内存管理
网友评论