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简单连接MongoDB数据库的方法
Mar 15 Python
Python中基础的socket编程实战攻略
Jun 01 Python
python 与GO中操作slice,list的方式实例代码
Mar 20 Python
使用 Python 实现微信公众号粉丝迁移流程
Jan 03 Python
python数字图像处理之骨架提取与分水岭算法
Apr 27 Python
Django REST framework视图的用法
Jan 16 Python
用pytorch的nn.Module构造简单全链接层实例
Jan 14 Python
keras 特征图可视化实例(中间层)
Jan 24 Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
Feb 25 Python
Python之关于类变量的两种赋值区别详解
Mar 12 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
Jun 15 Python
python opencv角点检测连线功能的实现代码
Nov 24 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网页游戏学习之Xnova(ogame)源码解读(三)
2014/06/23 PHP
PHPExcel在linux环境下导出报500错误的解决方法
2017/01/26 PHP
PHP获取真实客户端的真实IP
2017/03/07 PHP
php微信公众号开发之翻页查询
2018/10/20 PHP
用js统计用户下载网页所需时间的脚本
2008/10/15 Javascript
JavaScript 事件系统
2010/07/22 Javascript
jQuery UI AutoComplete 自动完成使用小记
2010/08/21 Javascript
jquery json 实例代码
2010/12/02 Javascript
JQuery获取与设置HTML元素的内容或文本的实现代码
2014/06/20 Javascript
Javascript的无new构建实例详解
2016/05/15 Javascript
BootStrap select2 动态改变值的方法
2017/02/10 Javascript
jQuery 实时保存页面动态添加的数据的示例
2017/08/14 jQuery
Vue组件通信的四种方式汇总
2018/02/08 Javascript
JavaScript中set与get方法用法示例
2018/08/15 Javascript
create-react-app安装出错问题解决方法
2018/09/04 Javascript
微信小程序后端无法保持session的原因及解决办法问题
2020/03/20 Javascript
[38:30]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场2
2014/05/24 DOTA
[40:27]完美世界DOTA2联赛PWL S3 PXG vs GXR 第一场 12.19
2020/12/24 DOTA
python中ConfigParse模块的用法
2014/09/29 Python
python with提前退出遇到的坑与解决方案
2018/01/05 Python
python3.6数独问题的解决
2019/01/21 Python
在Pycharm中使用GitHub的方法步骤
2019/06/13 Python
python中的decimal类型转换实例详解
2019/06/26 Python
Pytorch之parameters的使用
2019/12/31 Python
python pycharm最新版本激活码(永久有效)附python安装教程
2020/09/18 Python
Python之变量类型和if判断方式
2020/05/05 Python
Python 连接 MySQL 的几种方法
2020/09/09 Python
如何Tkinter模块编写Python图形界面
2020/10/14 Python
详解Python流程控制语句
2020/10/28 Python
python 实现"神经衰弱"翻牌游戏
2020/11/09 Python
python 爬取百度文库并下载(免费文章限定)
2020/12/04 Python
详解pandas apply 并行处理的几种方法
2021/02/24 Python
Bed Bath & Beyond加拿大官网:购买床上用品、浴巾、厨房电器等
2019/10/04 全球购物
法律系毕业生自荐信范文
2014/03/27 职场文书
投资申请报告
2015/05/19 职场文书
小学家长意见怎么写
2015/06/03 职场文书