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用61行代码实现图片像素化的示例代码
Dec 10 Python
python 与服务器的共享文件夹交互方法
Dec 27 Python
Python函数中不定长参数的写法
Feb 13 Python
python中pytest收集用例规则与运行指定用例详解
Jun 27 Python
对python3 sort sorted 函数的应用详解
Jun 27 Python
解决Python对齐文本字符串问题
Aug 28 Python
Django将默认的SQLite更换为MySQL的实现
Nov 18 Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
Mar 30 Python
Python基于模块Paramiko实现SSHv2协议
Apr 28 Python
Keras自动下载的数据集/模型存放位置介绍
Jun 19 Python
python基于OpenCV模板匹配识别图片中的数字
Mar 31 Python
python机器学习Github已达8.9Kstars模型解释器LIME
Nov 23 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
收音机另类DIY - 纸巾盒做外壳
2021/03/02 无线电
PDO防注入原理分析以及使用PDO的注意事项总结
2014/10/23 PHP
php基于session实现数据库交互的类实例
2015/08/03 PHP
Laravel5.4框架中视图共享数据的方法详解
2019/09/05 PHP
一些实用的jQuery代码片段收集
2011/07/12 Javascript
JavaScript异步调用定时方法并停止该方法实现代码
2012/03/16 Javascript
javascript的字符串按引用复制和传递,按值来比较介绍与应用
2012/12/28 Javascript
JS脚本defer的作用示例介绍
2014/01/02 Javascript
JavaScript中的acos()方法使用详解
2015/06/14 Javascript
jquery分页插件jquery.pagination.js使用方法解析
2016/04/01 Javascript
javascript RegExp 使用说明
2016/05/21 Javascript
Vue.js基础指令实例讲解(各种数据绑定、表单渲染大总结)
2017/07/03 Javascript
原生js封装的ajax方法示例
2018/08/02 Javascript
element vue Array数组和Map对象的添加与删除操作
2018/11/14 Javascript
详解微信小程序-canvas绘制文字实现自动换行
2019/04/26 Javascript
在vue中使用echars实现上浮与下钻效果
2019/11/08 Javascript
vue+AI智能机器人回复功能实现
2020/07/16 Javascript
[05:31]干嘛呢兄弟!DOTA2 TI9语音轮盘部分出处
2019/05/14 DOTA
Python psutil模块简单使用实例
2015/04/28 Python
python中常用的九种预处理方法分享
2016/09/11 Python
python实现逆序输出一个数字的示例讲解
2018/06/25 Python
Python 中list ,set,dict的大规模查找效率对比详解
2019/10/11 Python
django实现模型字段动态choice的操作
2020/04/01 Python
Java的接口和C++的虚类的相同和不同处
2014/03/27 面试题
护士自我鉴定范文
2013/10/06 职场文书
化学教师教学反思
2014/01/17 职场文书
服务承诺书怎么写
2014/05/24 职场文书
总经理助理岗位职责范本
2014/07/20 职场文书
孝敬父母的活动方案
2014/08/31 职场文书
2014年党员学习“三严三实”思想汇报
2014/09/15 职场文书
2015年全国爱耳日活动总结
2015/02/27 职场文书
党员违纪检讨书
2015/05/05 职场文书
开发一个封装iframe的vue组件
2021/03/29 Vue.js
解决jupyter notebook启动后没有token的坑
2021/04/24 Python
详解python字符串驻留技术
2021/05/21 Python
用Python编写简单的gRPC服务的详细过程
2021/07/04 Python