Python 变量的创建过程详解
作者:Kwan、C 时间:2022-04-20 03:01:17
一、变量创建过程
首先,当我们定义了一个变量name = 'Kwan'的时候,在内存中其实是做了这样一件事:
程序开辟了一块内存空间,将'Kwan'存储进去,再让变量名name指向'Kwan'所在的内存地址。如下图所示:
我们可以通过id()方法查看这个变量在内存中的地址。
name = 'Kwan'
print(id(name))
二、变量的修改
一般我们认为修改一个变量就是用新值把就旧值覆盖掉,可Python真是这么实现的么?
name = 'Kwan'
print(id(name))
name = 'Kobe'
print(id(name))
实际的原理是什么样的呢?程序先申请了一块内存空间来存储'Kwan',让name变量名指向这块内存空间,往下执行name = 'Kobe'之后,又申请了另一块内存空间来存储'Kobe',并让原本指向'Kwan'内存的链接断开,让name再指向'Kobe'。
三、变量的指向关系
问:下面这段代码为何出现这样的现象?
name1 = 'Kwan'
name2 = name1
print(name1, name2)
name1 = 'Kobe'
print(name1, name2)
要想知道上面问题的结果是为什么,首先要了解再内存中两个变量的存储情况。
从上面的示意图中我们可以知道,当执行name2 = name1时,事实上时让name2指向了'Kwan'所在的内存地址。
修改name1的值,相当于断开了name1到'Kwan'的链接,重新建立name1和'Kobe'之间的链接。在这个过程中,始终没有影响到name2和'Kwan'之间的关系,因此name2还是'Kwan',而name1变成了'Kobe'。
来源:https://www.cnblogs.com/Kwan-C/p/11444595.html
标签:python,变量,创建,过程
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
ASP 调用dll及封装dll实例
2011-03-17 10:47:00
python实现感知器算法(批处理)
2022-09-06 18:02:25
![](https://img.aspxhome.com/file/2023/7/91977_0s.jpg)
Python判断变量是否已经定义的方法
2023-08-01 07:14:01
浅谈Python flask框架
2021-04-07 00:45:43
![](https://img.aspxhome.com/file/2023/7/85257_0s.png)
最新python 字符串数组互转问题
2023-07-07 18:34:06
浅析is_writable的php实现
2023-09-09 01:41:05
自适应浏览器位置的div效果
2008-05-29 13:15:00
![](https://img.aspxhome.com/file/UploadPic/20085/29/div_24s.jpg)
php二分查找二种实现示例
2023-11-21 00:40:13
JavaScript性能优化小技巧,创建文档碎片
2010-03-31 18:27:00
python实现二级登陆菜单及安装过程
2023-09-16 16:05:44
![](https://img.aspxhome.com/file/2023/5/65955_0s.jpg)
python线程安全及多进程多线程实现方法详解
2023-08-27 02:01:54
Dhtml网页实例教程
2007-10-09 13:39:00
利用Python+OpenCV三步去除水印
2021-09-17 10:32:30
![](https://img.aspxhome.com/file/2023/7/80617_0s.jpg)
pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
2023-11-30 01:20:41
![](https://img.aspxhome.com/file/2023/3/87823_0s.png)
Python的Flask框架中web表单的教程
2023-05-17 06:11:06
![](https://img.aspxhome.com/file/2023/4/86634_0s.jpg)
使用 JScript 创建 .exe 或 .dll 文件
2011-06-04 15:37:00
Python小程序之在图片上加入数字的代码
2023-11-14 08:26:48
![](https://img.aspxhome.com/file/2023/7/97057_0s.png)
10个很实用的js小脚本代码
2007-10-17 21:08:00
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
2024-01-02 12:40:07
python读写修改Excel之xlrd&xlwt&xlutils
2022-04-03 16:35:43
![](https://img.aspxhome.com/file/2023/9/94149_0s.jpg)