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爬虫利用cookie实现模拟登陆实例详解
Jan 12 Python
Python设计模式之门面模式简单示例
Jan 09 Python
python读取文本中的坐标方法
Oct 14 Python
Python 利用scrapy爬虫通过短短50行代码下载整站短视频
Oct 29 Python
对python中xlsx,csv以及json文件的相互转化方法详解
Dec 25 Python
Django项目使用CircleCI的方法示例
Jul 14 Python
python之yield和Generator深入解析
Sep 18 Python
python3实现往mysql中插入datetime类型的数据
Mar 02 Python
Django ValuesQuerySet转json方式
Mar 16 Python
python退出循环的方法
Jun 18 Python
Python 列表推导式需要注意的地方
Oct 23 Python
python实现b站直播自动发送弹幕功能
Feb 20 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
改造一台复古桌面收音机
2021/03/02 无线电
在IIS7.0下面配置PHP 5.3.2运行环境的方法
2010/04/13 PHP
基于asp+ajax和数据库驱动的二级联动菜单
2010/05/06 PHP
PHP 计算代码执行耗时的代码修正网上普遍错误
2011/05/14 PHP
php中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
2011/11/26 PHP
Yii框架中memcache用法实例
2014/12/03 PHP
PHP开发注意事项总结
2015/02/04 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
浅谈Laravel模板实体转义带来的坑
2019/10/22 PHP
JavaScript中return false的用法
2015/03/12 Javascript
webpack独立打包和缓存处理详解
2017/04/03 Javascript
AngularJs 常用的过滤器
2017/05/15 Javascript
微信小程序 input表单与redio及下拉列表的使用实例
2017/09/20 Javascript
解析JS在获取当前月的最后一天遇到的坑
2019/08/30 Javascript
Python做文本按行去重的实现方法
2016/10/19 Python
python自定义异常实例详解
2017/07/11 Python
python利用标准库如何获取本地IP示例详解
2017/11/01 Python
Scrapy框架CrawlSpiders的介绍以及使用详解
2017/11/29 Python
Flask之请求钩子的实现
2018/12/23 Python
关于python导入模块import与常见的模块详解
2019/08/28 Python
Python倒排索引之查找包含某主题或单词的文件
2019/11/13 Python
Python多线程的退出控制实现
2020/08/10 Python
CSS+jQuery+PHP+MySQL实现的在线答题功能
2015/04/25 HTML / CSS
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
Senreve官网:美国旧金山的奢侈手袋品牌
2019/03/21 全球购物
Waterford英国官方网站:世界上最受欢迎的优质水晶品牌
2019/08/17 全球购物
linux下进程间通信的方式
2014/12/23 面试题
2014三八妇女节活动总结范文四篇
2014/03/09 职场文书
机电一体化应届生求职信
2014/08/09 职场文书
企业法人代表证明书
2014/09/27 职场文书
办公用房租赁协议书
2014/11/29 职场文书
智慧人生:永远不需要向任何人解释你自己
2019/08/20 职场文书
导游词之五台山
2019/10/11 职场文书
python numpy中setdiff1d的用法说明
2021/04/22 Python
python实现过滤敏感词
2021/05/08 Python
分析mysql中一条SQL查询语句是如何执行的
2021/06/21 MySQL