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多进程库multiprocessing中进程池Pool类的使用详解
Nov 24 Python
Python字典数据对象拆分的简单实现方法
Dec 05 Python
Python实现文件信息进行合并实例代码
Jan 17 Python
Python实现的本地文件搜索功能示例【测试可用】
May 30 Python
Python同步遍历多个列表的示例
Feb 19 Python
python爬虫 爬取58同城上所有城市的租房信息详解
Jul 30 Python
用python wxpy管理微信公众号并利用微信获取自己的开源数据
Jul 30 Python
对django layer弹窗组件的使用详解
Aug 31 Python
Python中six模块基础用法
Dec 08 Python
TensorFlow实现指数衰减学习率的方法
Feb 05 Python
python计算auc的方法
Sep 09 Python
Pytorch 统计模型参数量的操作 param.numel()
May 13 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
YII2.0之Activeform表单组件用法实例
2016/01/09 PHP
PHP编写简单的App接口
2016/08/28 PHP
PHP中file_put_contents追加和换行的实现方法
2017/04/01 PHP
PHP实现微信退款的方法示例
2019/03/26 PHP
thinkPHP5框架接口写法简单示例
2019/08/05 PHP
获取任意Html元素与body之间的偏移距离 offsetTop、offsetLeft (For:IE5+ FF1 )[
2006/12/22 Javascript
url 特殊字符 传递参数解决方法
2010/01/01 Javascript
jquery ajax跨域解决方法(json方式)
2014/02/04 Javascript
js动态控制table的tr、td增加及删除的具体实现
2014/04/30 Javascript
jquery访问ashx文件示例代码
2014/08/11 Javascript
Lab.js初次使用笔记
2015/02/28 Javascript
仿百度换肤功能的简单实例代码
2016/07/11 Javascript
Vue表单实例代码
2016/09/05 Javascript
分享19个JavaScript 有用的简写写法
2017/07/07 Javascript
微信小程序实现跑马灯效果
2020/10/21 Javascript
Node.js Event Loop各阶段讲解
2019/03/08 Javascript
JS数组reduce()方法原理及使用技巧解析
2020/07/14 Javascript
Ant Design的可编辑Tree的实现操作
2020/10/31 Javascript
[01:58]最残酷竞争 2016国际邀请赛中国区预选赛积分循环赛回顾
2016/06/28 DOTA
python实现上传样本到virustotal并查询扫描信息的方法
2014/10/05 Python
python获取android设备的GPS信息脚本分享
2015/03/06 Python
Python3编程实现获取阿里云ECS实例及监控的方法
2017/08/18 Python
TensorFlow变量管理详解
2018/03/10 Python
Java与Python两大幸存者谁更胜一筹呢
2018/04/12 Python
Sanic框架异常处理与中间件操作实例分析
2018/07/16 Python
Django数据库连接丢失问题的解决方法
2018/12/29 Python
利用pyinstaller打包exe文件的基本教程
2019/05/02 Python
python 实现字符串下标的输出功能
2020/02/13 Python
详解python百行有效代码实现汉诺塔小游戏(简约版)
2020/10/30 Python
Python爬取酷狗MP3音频的步骤
2021/02/26 Python
印度手工编织服装和家居用品商店:Fabindi
2019/10/07 全球购物
个人考核材料
2014/05/15 职场文书
工会工作先进事迹
2014/08/18 职场文书
项目安全员岗位职责
2015/02/15 职场文书
严以修身专题学习研讨会发言材料
2015/11/09 职场文书
Python可视化学习之matplotlib内置单颜色
2022/02/24 Python