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模拟登陆类
Mar 29 Python
用Python编写一个简单的Lisp解释器的教程
Apr 03 Python
Python程序中使用SQLAlchemy时出现乱码的解决方案
Apr 24 Python
浅谈python写入大量文件的问题
Nov 09 Python
PyCharm配置mongo插件的方法
Nov 30 Python
Python代码打开本地.mp4格式文件的方法
Jan 03 Python
Python实现的矩阵转置与矩阵相乘运算示例
Mar 26 Python
Python中pymysql 模块的使用详解
Aug 12 Python
PyTorch: Softmax多分类实战操作
Jul 07 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
Nov 28 Python
如何在Python中妥善使用进度条详解
Apr 05 Python
Python 匹配文本并在其上一行追加文本
May 11 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导入导出excel实例
2013/10/25 PHP
PHP 访问数据库配置通用方法(json)
2018/05/20 PHP
浅析PHP中的 inet_pton 网络函数
2019/12/16 PHP
基于jquery的获取浏览器窗口大小的代码
2011/03/28 Javascript
精通Javascript系列之Javascript基础篇
2011/06/07 Javascript
jquery easyui combobox模糊过滤(示例代码)
2013/11/30 Javascript
JavaScript数据库TaffyDB用法实例分析
2015/07/27 Javascript
animate 实现滑动切换效果【实例代码】
2016/05/05 Javascript
Angular.js中处理页面闪烁的方法详解
2017/03/09 Javascript
JS获取子、父、兄节点方法小结
2017/08/14 Javascript
vue复合组件实现注册表单功能
2017/11/06 Javascript
基于vue-resource jsonp跨域问题的解决方法
2018/02/03 Javascript
详解Vue用cmd创建项目
2019/02/12 Javascript
Vue.js组件props数据验证实现详解
2019/10/19 Javascript
webpack优化之代码分割与公共代码提取详解
2019/11/22 Javascript
nodejs各种姿势断点调试的方法
2020/06/18 NodeJs
python正则表达式re模块详细介绍
2014/05/29 Python
小结Python用fork来创建子进程注意事项
2014/07/03 Python
Python中字典映射类型的学习教程
2015/08/20 Python
PYTHON压平嵌套列表的简单实现
2016/06/08 Python
深入理解Python中变量赋值的问题
2017/01/12 Python
树莓派使用python-librtmp实现rtmp推流h264的方法
2019/07/22 Python
python实现邮件自动发送
2019/08/10 Python
OpenCV模板匹配matchTemplate的实现
2019/10/18 Python
MAC平台基于Python Appium环境搭建过程图解
2020/08/13 Python
Pytest测试框架基本使用方法详解
2020/11/25 Python
python 利用百度API识别图片文字(多线程版)
2020/12/14 Python
台湾线上百货零售购物平台:friDay购物
2017/08/18 全球购物
德国孕妇装和婴童服装网上商店:bellybutton
2018/04/12 全球购物
土木工程应届生求职信
2013/10/31 职场文书
个人公开承诺书
2014/03/28 职场文书
五心教育心得体会
2014/09/04 职场文书
中小学校园安全广播稿
2014/09/29 职场文书
2014年库房工作总结
2014/11/26 职场文书
2015年酒店工作总结
2015/04/28 职场文书
Win10鼠标宏怎么设置?win10系统鼠标宏的设置方法
2022/08/14 数码科技