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系列之从文件读取和保存数据
May 23 Python
仅用500行Python代码实现一个英文解析器的教程
Apr 02 Python
详解Python3中yield生成器的用法
Aug 20 Python
Python实现Linux命令xxd -i功能
Mar 06 Python
Python中pygal绘制雷达图代码分享
Dec 07 Python
在python中pandas的series合并方法
Nov 12 Python
flask 实现上传图片并缩放作为头像的例子
Jan 09 Python
如何在pycharm中安装第三方包
Oct 27 Python
Python实现列表索引批量删除的5种方法
Nov 16 Python
python3实现名片管理系统(控制台版)
Nov 29 Python
pytorch 梯度NAN异常值的解决方案
Jun 05 Python
Python FuzzyWuzzy实现模糊匹配
Apr 28 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 和 HTML
2006/10/09 PHP
php 伪造本地文件包含漏洞的代码
2011/11/03 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
2014/06/30 PHP
ThinkPHP连接数据库及主从数据库的设置教程
2014/08/22 PHP
php头像上传预览实例代码
2017/05/02 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
JQuery实现的在新窗口打开链接的方法小结
2010/04/22 Javascript
基于Jquery实现表格动态分页实现代码
2011/06/21 Javascript
JS.getTextContent(element,preformatted)使用介绍
2013/09/21 Javascript
Javascript学习笔记之数组的遍历和 length 属性
2014/11/23 Javascript
AngularJS 实现弹性盒子布局的方法
2016/08/30 Javascript
jQuery图片切换动画特效
2016/11/02 Javascript
AngularJS的Filter的示例详解
2017/03/07 Javascript
JavaScript简介_动力节点Java学院整理
2017/06/26 Javascript
js自定义弹框插件的封装
2020/08/24 Javascript
浅谈js中的this问题
2017/08/31 Javascript
打造通用的匀速运动框架(实例讲解)
2017/10/17 Javascript
js实现二级菜单点击显示当前内容效果
2018/04/28 Javascript
深入理解JavaScript的值传递和引用传递
2018/10/24 Javascript
vue单页应用的内存泄露定位和修复问题小结
2019/08/02 Javascript
基于element-ui对话框el-dialog初始化的校验问题解决
2020/09/11 Javascript
Python中使用Flask、MongoDB搭建简易图片服务器
2015/02/04 Python
Python中使用MELIAE分析程序内存占用实例
2015/02/18 Python
python实现多人聊天室
2020/03/31 Python
Python3 执行系统命令并获取实时回显功能
2019/07/09 Python
python的debug实用工具 pdb详解
2019/07/12 Python
python实现简单井字棋小游戏
2020/03/05 Python
python利用线程实现多任务
2020/09/18 Python
python switch 实现多分支选择功能
2020/12/21 Python
matplotlib实现数据实时刷新的示例代码
2021/01/05 Python
基于HTML5的WebGL经典3D虚拟机房漫游动画
2017/11/15 HTML / CSS
全世界最美丽的四星和五星级酒店预订:Prestigia.com
2017/11/15 全球购物
企业负责人任命书
2014/06/05 职场文书
小学秋季运动会加油口号及加油稿
2019/08/19 职场文书
Mysql中一千万条数据怎么快速查询
2021/12/06 MySQL
MySQL范围查询优化的场景实例详解
2022/06/10 MySQL