python的变量与赋值详细分析


Posted in Python onNovember 08, 2017

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次引用的还是不够的,所以此时还有其他的算法来回收。

总结

以上就是本文关于python的变量与赋值详细分析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:python好玩的项目—色情图片识别代码分享、Python实现一个简单的验证码程序、Python算法输出1-9数组形成的结果为100的所有运算式等,有什么问题可以随时留言,小编会及时回复大家的。感谢朋友们对本站的支持!

Python 相关文章推荐
更改Python命令行交互提示符的方法
Jan 14 Python
Python将xml和xsl转换为html的方法
Mar 10 Python
Python实现批量将word转html并将html内容发布至网站的方法
Jul 14 Python
Python制作简易注册登录系统
Dec 15 Python
对Python中plt的画图函数详解
Nov 07 Python
对python遍历文件夹中的所有jpg文件的实例详解
Dec 08 Python
python 获取页面表格数据存放到csv中的方法
Dec 26 Python
Python3内置模块之json编解码方法小结【推荐】
Dec 09 Python
python实现简单成绩录入系统
Sep 19 Python
Python函数的定义方式与函数参数问题实例分析
Dec 26 Python
完美解决jupyter由于无法import新包的问题
May 26 Python
Python+Appium实现自动化清理微信僵尸好友的方法
Feb 04 Python
浅谈python迭代器
Nov 08 #Python
python生成excel的实例代码
Nov 08 #Python
Python 多核并行计算的示例代码
Nov 07 #Python
python判断字符串是否是json格式方法分享
Nov 07 #Python
python好玩的项目—色情图片识别代码分享
Nov 07 #Python
深入理解python中函数传递参数是值传递还是引用传递
Nov 07 #Python
python中numpy.zeros(np.zeros)的使用方法
Nov 07 #Python
You might like
PHP rawurlencode与urlencode函数的深入分析
2013/06/08 PHP
php多个字符串替换成同一个的解决方法
2013/06/18 PHP
PHP判断是否连接上网络的方法
2015/07/01 PHP
PHP flush 函数使用注意事项
2016/08/26 PHP
PHP封装的mysqli数据库操作类示例
2019/02/16 PHP
JS获取父节点方法
2009/08/20 Javascript
Mootools 1.2教程 输入过滤第二部分(字符串)
2009/09/15 Javascript
Google AJAX 搜索 API实现代码
2010/11/17 Javascript
jquery ui dialog ie8出现滚动条的解决方法
2010/12/06 Javascript
javascript实现图片切换的幻灯片效果源代码
2012/12/12 Javascript
javascript对select标签的控制(option选项/select)
2013/01/31 Javascript
JS定时器实例
2013/04/17 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
2016/01/29 Javascript
IE8兼容Jquery.validate.js的问题
2016/12/01 Javascript
详解Node.js项目APM监控之New Relic
2017/05/12 Javascript
Angular 2父子组件数据传递之@Input和@Output详解(下)
2017/07/05 Javascript
Vue编写多地区选择组件
2017/08/21 Javascript
微信小程序getPhoneNumber获取用户手机号
2017/09/29 Javascript
angular4中*ngFor不能对返回来的对象进行循环的解决方法
2018/09/12 Javascript
编写Python脚本来获取mp3文件tag信息的教程
2015/05/04 Python
Python装饰器实现几类验证功能做法实例
2017/05/18 Python
python Flask实现restful api service
2017/12/04 Python
Python读取Json字典写入Excel表格的方法
2018/01/03 Python
Python数据分析:手把手教你用Pandas生成可视化图表的教程
2018/12/15 Python
matplotlib.pyplot画图并导出保存的实例
2019/12/07 Python
Python2.x与3​​.x版本有哪些区别
2020/07/09 Python
深入浅析pycharm中 Make available to all projects的含义
2020/09/15 Python
python 装饰器重要在哪
2021/02/14 Python
iframe跨域的几种常用方法
2019/11/11 HTML / CSS
韩国美国时尚服装和美容在线全球市场:KOODING
2018/11/07 全球购物
生产部厂长职位说明书
2014/03/03 职场文书
党员干部观看《周恩来四个昼夜》思想汇报
2014/09/10 职场文书
预备党员的思想汇报,你真的会写吗?
2019/06/28 职场文书
Android开发之WECHAT微信小程序路由跳转的两种形式
2022/04/12 Java/Android
python绘制简单直方图(质量分布图)的方法
2022/04/21 Python
Win2008系统搭建DHCP服务器
2022/06/25 Servers