Python中一切皆对象,这节主要内容如下:

  1. 变量命名规则
  2. 变量赋值
  3. 变量与内存
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内存管理