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正则表达式 re模块使用说明
May 19 Python
Python中对元组和列表按条件进行排序的方法示例
Nov 10 Python
Python实现FTP上传文件或文件夹实例(递归)
Jan 16 Python
Python单例模式实例详解
Mar 01 Python
Python中进程和线程的区别详解
Oct 29 Python
Pandas:DataFrame对象的基础操作方法
Jun 07 Python
python 实现将txt文件多行合并为一行并将中间的空格去掉方法
Dec 20 Python
详解python中递归函数
Apr 16 Python
NumPy 数组使用大全
Apr 25 Python
Python使用Tkinter实现转盘抽奖器的步骤详解
Jan 06 Python
Python+PyQt5+MySQL实现天气管理系统
Jun 16 Python
python中pd.cut()与pd.qcut()的对比及示例
Jun 16 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中根据IP地址判断城市实现城市切换或跳转代码
2012/09/04 PHP
php中将一个对象保存到Session中的方法
2015/03/13 PHP
laravel 5.4 + vue + vux + element的环境搭配过程介绍
2018/04/26 PHP
js正确获取元素样式详解
2009/08/07 Javascript
jQuery.autocomplete 支持中文输入(firefox)修正方法
2011/03/10 Javascript
javascript 函数及作用域总结介绍
2013/11/12 Javascript
JavaScript列表框listbox全选和反选的实现方法
2015/03/18 Javascript
浅谈jQuery构造函数分析
2015/05/11 Javascript
Bootstrap 模态框(Modal)插件代码解析
2016/12/21 Javascript
canvas学习之API整理笔记(二)
2016/12/29 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
2017/06/02 jQuery
Vue js 的生命周期(看了就懂)(推荐)
2019/03/29 Javascript
微信小程序Echarts图表组件使用方法详解
2019/06/25 Javascript
微信小程序中的video视频实现 自定义播放按钮、封面图、视频封面上文案
2020/01/02 Javascript
js实现坦克大战游戏
2020/02/24 Javascript
js中addEventListener()与removeEventListener()用法案例分析
2020/03/02 Javascript
Python实现的生成自我描述脚本分享(很有意思的程序)
2014/07/18 Python
Python在Console下显示文本进度条的方法
2016/02/14 Python
举例讲解Python中的list列表数据结构用法
2016/03/12 Python
django orm 通过related_name反向查询的方法
2018/12/15 Python
Python单元测试unittest的具体使用示例
2018/12/17 Python
python 寻找离散序列极值点的方法
2019/07/10 Python
django rest framework vue 实现用户登录详解
2019/07/29 Python
python函数中将变量名转换成字符串实例
2020/05/11 Python
python获得命令行输入的参数的两种方式
2020/11/02 Python
利用CSS3实现开门效果实例源码
2016/08/22 HTML / CSS
Java程序员常见面试题
2015/07/16 面试题
争先创优活动总结
2014/08/27 职场文书
倡议书格式
2014/08/30 职场文书
升国旗演讲稿
2014/09/05 职场文书
乡镇群众路线教育实践活动整改措施
2014/10/04 职场文书
工厂仓管员岗位职责
2015/04/01 职场文书
刑事案件上诉状
2015/05/23 职场文书
运动会闭幕式主持词
2015/07/01 职场文书
《领导干部从政道德启示录》学习心得体会
2016/01/20 职场文书
css3应用示例:新增的选择器
2022/03/16 HTML / CSS