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中的字符串替换操作示例
Jun 27 Python
Python操作Access数据库基本步骤分析
Sep 19 Python
python写入已存在的excel数据实例
May 03 Python
利用pandas将numpy数组导出生成excel的实例
Jun 14 Python
python调用百度语音REST API
Aug 30 Python
python 反编译exe文件为py文件的实例代码
Jun 27 Python
详解PANDAS 数据合并与重塑(join/merge篇)
Jul 09 Python
python 抓包保存为pcap文件并解析的实例
Jul 23 Python
Django之模板层的实现代码
Sep 09 Python
基于Keras的格式化输出Loss实现方式
Jun 17 Python
详解Python中的路径问题
Sep 02 Python
OpenCV实现机器人对物体进行移动跟随的方法实例
Nov 09 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
PHP获取当前页面完整URL的实现代码
2013/06/10 PHP
PHP封装CURL扩展类实例
2015/07/28 PHP
php中使用GD库做验证码
2016/03/31 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
php图片裁剪函数
2018/10/31 PHP
Laravel 框架返回状态拦截代码
2019/10/18 PHP
jQuery 类twitter的文本字数限制带提示效果插件
2010/04/16 Javascript
JQUERY设置IFRAME的SRC值的代码
2010/11/30 Javascript
如何制作浮动广告 JavaScript制作浮动广告代码
2012/12/30 Javascript
jquery插件tooltipv顶部淡入淡出效果使用示例
2013/12/05 Javascript
javascript获取元素偏移量的方法有哪些
2014/06/24 Javascript
JS实现鼠标滑过链接改变网页背景颜色的方法
2015/10/20 Javascript
javascript实现获取指定精度的上传文件的大小简单实例
2016/10/25 Javascript
微信小程序 下拉列表的实现实例代码
2017/03/08 Javascript
Vue实现动态响应数据变化
2017/04/28 Javascript
Angular中ng-repeat与ul li的多层嵌套重复问题
2017/07/24 Javascript
一次记住JavaScript的6个正则表达式方法
2018/02/22 Javascript
JS匿名函数内部this指向问题详析
2019/05/10 Javascript
layui 实现加载动画以及非真实加载进度的方法
2019/09/23 Javascript
jquery html添加元素/删除元素操作实例详解
2020/05/20 jQuery
实例讲解React 组件
2020/07/07 Javascript
Python中的进程分支fork和exec详解
2015/04/11 Python
深入解析Python编程中super关键字的用法
2016/06/24 Python
pyenv虚拟环境管理python多版本和软件库的方法
2019/12/26 Python
Python变量、数据类型、数据类型转换相关函数用法实例详解
2020/01/09 Python
python 解压、复制、删除 文件的实例代码
2020/02/26 Python
谈谈Python:为什么类中的私有属性可以在外部赋值并访问
2020/03/05 Python
python3 自动打印出最新版本执行的mysql2redis实例
2020/04/09 Python
python中selenium库的基本使用详解
2020/07/31 Python
Python使用Pygame绘制时钟
2020/11/29 Python
CSS3模拟动画下拉菜单效果
2017/04/12 HTML / CSS
课程改革实施方案
2014/03/16 职场文书
大学生就业自我推荐信
2014/05/10 职场文书
光棍节联谊晚会活动策划书
2014/10/10 职场文书
解析:创业计划书和商业计划书二者之间到底有什么区别
2019/08/14 职场文书
基于JavaScript实现年月日三级联动
2021/06/22 Javascript