python的变量与赋值详细分析

作者:ZHANGONE 时间:2022-06-14 23:09:44 

python的变量与赋值

1.变量的命名规则

变量其实通过一个标记调用内存中的值,而变量名就是这个标记的名称,但是万一这个标记已经被提前占用或者解释器认为这个标记是不合法的,那么就会报错。下面总结了一下变量的命名规则:

1.不能使用python的关键字,也就是说标记不能被提前占用,python的关键字包括:
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
2.变量名的第一个字符不能是数字,这样的命名被认为是不合法的。
3.变量名只能是字母、数字或下划线(_)的任意组合。

规则就是规则,没有什么好解释的,但是我们可以在符合规则的前提下做进一步的要求,详情请参照python的pep8编码规范

2.变量的赋值

在python中,我们对变量进行赋值的时候,用的是一个等于符号(=),要注意不是两个(==)。

例如:

a = 10

这段代码的动作就相当于:

python的变量与赋值详细分析

注意:我们并不是为标记a建立了一个值,而是先建立一个值以后,再用一个标记去指向它。

在知道了赋值是怎么进行的以后,我们再来看下面这个代码:


a = 10
b = a
a = 20

那么,此时b=?
如果按照我们常用的数学思维的话,那么b肯定是等于20的,但这里却不是这样的,如果按照一般的思维的话,是下面这样的:

python的变量与赋值详细分析

如果按照这个逻辑的话,那么b肯定是等于20的,但这里是错误的,所以我画了个叉。

因为变量是一个标记,用来调用内存中的值,当我们将一个标记赋值给另一个标记的时候,应该是让其指向另一个标记的内存,而不是指向标记。

按照这个原则,我们的思路应该是这样的:

python的变量与赋值详细分析

也就是说此时b应该等于10,下面我们来试验一下是否正确:

python的变量与赋值详细分析

验证正确,这个思路没有问题。

3.python中的垃圾回收机制

这个时候我们可能会有疑问,如果是下面这种情况会怎么样:


a = 10
a = 20

按照我们之前建立的思维,a已经指向了20了,那么剩下的那个10会怎么样?

这就要说起python中的垃圾回收机制了,python会按一定的规则回收内存中的垃圾数据以释放内存空间。

Python内存回收的基石是引用计数,“当一个对象的引用被创建或复制时,对象的引用计数加1;当一个对象的引用被销毁时,对象的引用计数减1”,如果对象的引用计数减少为0,将对象的所占用的内存释放。

python通过引用计数,将引用次数为0的数据从内存中清除,具体的回收时机不太清楚,可能是每隔一段时间回收一次。

简单的垃圾回收这这样的,但垃圾回收的机制远比这要复杂许多,因为有时候会出现循环引用的情况,这种时候,单纯清除0次引用的还是不够的,所以此时还有其他的算法来回收。

来源:http://www.cnblogs.com/zhange/p/7800722.html

标签:python,变量赋值
0
投稿

猜你喜欢

  • 如何在pycharm中配置pyqt5设计GUI操作教程

    2021-09-28 17:42:21
  • 详解Python调试神器之PySnooper

    2021-05-20 06:51:12
  • Python读取csv文件分隔符设置方法

    2021-10-22 16:59:47
  • 详解python中*号的用法

    2023-05-03 18:55:11
  • 谈谈我的“分离”观

    2010-08-31 14:47:00
  • 深入了解Golang中Slice切片的使用

    2023-09-25 08:59:08
  • DD_belatedPNG,解决IE6不支持PNG绝佳方案

    2009-04-27 16:30:00
  • python使用thrift教程的方法示例

    2022-03-14 04:29:02
  • python 读txt文件,按‘,’分割每行数据操作

    2022-11-11 08:04:17
  • Oracle 数据 使用游标

    2009-07-02 12:14:00
  • 用Python做的数学四则运算_算术口算练习程序(后添加减乘除)

    2023-04-10 13:27:35
  • 用自定义html标签让IE支持html5新增元素

    2011-03-17 16:10:00
  • 全面了解CSS内置颜色(color)值

    2008-11-19 12:26:00
  • 简单了解Python3里的一些新特性

    2022-09-22 21:32:23
  • python虚拟环境迁移方法

    2021-09-13 07:52:51
  • Js sort排序使用方法

    2023-10-19 10:20:55
  • Python面向对象类继承和组合实例分析

    2021-08-25 05:08:12
  • Pycharm无法正常安装第三方库的几条应对方法汇总

    2021-07-18 00:59:52
  • python3 cmp实现方式

    2023-12-13 18:10:25
  • Python自定义sorted排序实现方法详解

    2022-08-03 05:40:02
  • asp之家 网络编程 m.aspxhome.com