Python 变量的创建过程详解


Posted in Python onSeptember 02, 2019

一、变量创建过程

首先,当我们定义了一个变量name = 'Kwan'的时候,在内存中其实是做了这样一件事:

程序开辟了一块内存空间,将'Kwan'存储进去,再让变量名name指向'Kwan'所在的内存地址。如下图所示:

Python 变量的创建过程详解

我们可以通过id()方法查看这个变量在内存中的地址。

name = 'Kwan'
print(id(name))

二、变量的修改

一般我们认为修改一个变量就是用新值把就旧值覆盖掉,可Python真是这么实现的么?

name = 'Kwan'
print(id(name))
name = 'Kobe'
print(id(name))

Python 变量的创建过程详解

实际的原理是什么样的呢?程序先申请了一块内存空间来存储'Kwan',让name变量名指向这块内存空间,往下执行name = 'Kobe'之后,又申请了另一块内存空间来存储'Kobe',并让原本指向'Kwan'内存的链接断开,让name再指向'Kobe'。

Python 变量的创建过程详解

三、变量的指向关系

问:下面这段代码为何出现这样的现象?

name1 = 'Kwan'
name2 = name1
print(name1, name2)
name1 = 'Kobe'
print(name1, name2)

Python 变量的创建过程详解

要想知道上面问题的结果是为什么,首先要了解再内存中两个变量的存储情况。

Python 变量的创建过程详解

从上面的示意图中我们可以知道,当执行name2 = name1时,事实上时让name2指向了'Kwan'所在的内存地址。

修改name1的值,相当于断开了name1到'Kwan'的链接,重新建立name1和'Kobe'之间的链接。在这个过程中,始终没有影响到name2和'Kwan'之间的关系,因此name2还是'Kwan',而name1变成了'Kobe'。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python检查字符串是否是正确ISBN的方法
Jul 11 Python
Python中index()和seek()的用法(详解)
Apr 27 Python
python+requests+unittest API接口测试实例(详解)
Jun 10 Python
浅谈python中的__init__、__new__和__call__方法
Jul 18 Python
python表格存取的方法
Mar 07 Python
win10下tensorflow和matplotlib安装教程
Sep 19 Python
pyqt5 QProgressBar清空进度条的实例
Jun 21 Python
python如何将两个txt文件内容合并
Oct 18 Python
Python Flask上下文管理机制实例解析
Mar 16 Python
Django 允许局域网中的机器访问你的主机操作
May 13 Python
python中upper是做什么用的
Jul 20 Python
Python测试框架:pytest学习笔记
Oct 20 Python
python脚本之一键移动自定格式文件方法实例
Sep 02 #Python
Python中zip()函数的简单用法举例
Sep 02 #Python
Python在OpenCV里实现极坐标变换功能
Sep 02 #Python
Python 读取用户指令和格式化打印实现解析
Sep 02 #Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
Sep 02 #Python
Python目录和文件处理总结详解
Sep 02 #Python
Python3操作Excel文件(读写)的简单实例
Sep 02 #Python
You might like
德劲1104的电路分析与改良
2021/03/01 无线电
一个用于MySQL的PHP XML类
2006/10/09 PHP
Smarty结合Ajax实现无刷新留言本实例
2007/01/02 PHP
使用XDebug调试及单元测试覆盖率分析
2011/01/27 PHP
浅析51个PHP处理字符串的函数
2013/08/02 PHP
php判断文件夹是否存在不存在则创建
2015/04/09 PHP
详解WordPress开发中wp_title()函数的用法
2016/01/07 PHP
PHP学习笔记之session
2018/05/06 PHP
javascript 客户端验证上传图片的大小(兼容IE和火狐)
2009/08/15 Javascript
GWT中复制到剪贴板 js+flash实现复制 兼容性比较好
2010/03/07 Javascript
JavaScript Math.ceil() 函数使用介绍
2013/12/11 Javascript
js清除input中type等于file的值域(示例代码)
2013/12/24 Javascript
JavaScript 作用域链解析
2014/11/13 Javascript
AngularJS中监视Scope变量以及外部调用Scope方法
2016/01/23 Javascript
js获取Get值的方法
2016/09/29 Javascript
轻松搞定js表单验证
2016/10/13 Javascript
JS中的phototype详解
2017/02/04 Javascript
BootStrap 表单控件之单选按钮水平排列
2017/05/23 Javascript
JS实现前端缓存的方法
2017/09/21 Javascript
Vue指令v-for遍历输出JavaScript数组及json对象的常见方式小结
2019/02/11 Javascript
Vue实现拖放排序功能的实例代码
2019/07/08 Javascript
layui表单验证select下拉框实现验证的方法
2019/09/05 Javascript
Python实现二叉树结构与进行二叉树遍历的方法详解
2016/05/24 Python
Python通过RabbitMQ服务器实现交换机功能的实例教程
2016/06/29 Python
python抓取文件夹的所有文件
2018/02/27 Python
Python模拟FTP文件服务器的操作方法
2020/02/18 Python
使用matplotlib的pyplot模块绘图的实现示例
2020/07/12 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
2020/07/21 Python
PyCharm2020.1.1与Python3.7.7的安装教程图文详解
2020/08/07 Python
移动端Html5中百度地图的点击事件
2019/01/31 HTML / CSS
SmartBuyGlasses荷兰:购买太阳镜和眼镜
2020/03/16 全球购物
网络技术支持面试题
2013/04/22 面试题
小区门卫岗位职责
2013/12/31 职场文书
新闻编辑专业毕业自荐书范文
2014/02/05 职场文书
2015年质检工作总结
2015/05/04 职场文书
中学语文教学反思
2016/02/16 职场文书