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根据路径导入模块的方法
Sep 30 Python
python append、extend与insert的区别
Oct 13 Python
Python中循环引用(import)失败的解决方法
Apr 22 Python
Python函数any()和all()的用法及区别介绍
Sep 14 Python
python+unittest+requests实现接口自动化的方法
Nov 29 Python
对pandas写入读取h5文件的方法详解
Dec 28 Python
Python两个字典键同值相加的几种方法
Mar 05 Python
详解django2中关于时间处理策略
Mar 06 Python
使用Python进行体育竞技分析(预测球队成绩)
May 16 Python
使用Flask-Cache缓存实现给Flask提速的方法详解
Jun 11 Python
python3 mmh3安装及使用方法
Oct 09 Python
使用matplotlib的pyplot模块绘图的实现示例
Jul 12 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
第十一节--重载
2006/11/16 PHP
Zend的AutoLoad机制介绍
2012/09/27 PHP
destoon常用的安全设置概述
2014/06/21 PHP
PHP也能干大事 随机函数
2015/04/14 PHP
php实现window平台的checkdnsrr函数
2015/05/27 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
2019/07/06 PHP
IE8 兼容性问题(属性名区分大小写)
2009/06/04 Javascript
window.open以post方式将内容提交到新窗口
2012/12/26 Javascript
jquery ajax提交整个表单元素的快捷办法
2013/03/27 Javascript
教你如何自定义百度分享插件以及bshare分享插件的分享按钮
2014/06/20 Javascript
jQuery实现的感应鼠标悬停图片色彩渐显效果
2015/03/03 Javascript
限制只能输入数字的实现代码
2016/05/16 Javascript
JavaScript中利用for循环遍历数组
2017/01/15 Javascript
Vue.js事件处理器与表单控件绑定详解
2017/03/20 Javascript
vue页面切换到滚动页面显示顶部的实例
2018/03/13 Javascript
详解@Vue/Cli 3 Invalid Host header 错误解决办法
2019/01/02 Javascript
JavaScript实现shuffle数组洗牌操作示例
2019/01/03 Javascript
bootstrap实现tab选项卡切换
2020/08/09 Javascript
js轮播图之旋转木马效果
2020/10/13 Javascript
[07:52]2014DOTA2 TI逗比武士游V社解说背后的故事
2014/07/10 DOTA
[20:57]Ti4主赛事第三天开幕式
2014/07/21 DOTA
[01:34]完美“圣”典宣传片震撼发布,12.17与你不见不散
2016/12/16 DOTA
python实现html转ubb代码(html2ubb)
2014/07/03 Python
python计算文本文件行数的方法
2015/07/06 Python
Python中的列表生成式与生成器学习教程
2016/03/13 Python
python win32 简单操作方法
2017/05/25 Python
django manage.py扩展自定义命令方法
2018/05/27 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
2020/04/01 Python
两只小狮子教学反思
2014/02/05 职场文书
小学班主任寄语大全
2014/04/04 职场文书
教师党员岗位承诺书
2014/05/29 职场文书
电子信息工程专业求职信
2014/06/28 职场文书
员工生日活动方案
2014/08/24 职场文书
人力资源部岗位职责
2015/02/11 职场文书
2015年工商局个人工作总结
2015/07/23 职场文书
《悬崖边的树》读后感2篇
2019/12/02 职场文书