Python之变量的创建过程

Python之变量的创建过程

一、变量创建过程

首先,当我们定义了一个变量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

时间: 2024-10-14 13:59:50

Python之变量的创建过程的相关文章

python的变量,对象的内存地址以及参数传递过程

作为一个由c/c++转过来的菜鸟,刚接触Python的变量的时候很不适应,应为他的行为很像指针,void* ,不知道大家有没有这样的感觉.其实Python是以数据为本,变量可以理解为标签.作为c/c++的菜鸟,把跟踪变量地址的习惯带入Python,举个小例子说明Python的变量,对象,及参数传递. 1 '''例子1''' 2 x = 1 3 def fun(x): 4 x = 2 5 return None 6 7 fun(x) 8 print(x) 其实不打印也可以,我们用pycharm单步

Python类的创建过程

类的创建过程 以下说的类指的类本身,例如以下代码: class Foo: def __init__(self): pass 则指的 Foo 的创建过程,而不是 Foo 的实例. 1. 解析 MRO 记录(Resolving MRO entries) 根据 MRO 规则解析继承关系 2. 确定元类(Determining the appropriate metaclass) 查找元类的过程遵循以下规则: 如果没有基类且没有指定 metaclass ,则使用 type() 如果指定了 metacla

【python】-- 类的创建、__new__、__metaclass___

类的创建 前面的随笔都是关于类的知识,通过类创建对象,那这个类到底是怎么产生的呢? 1. 传统创建类 class Foo(object): def __init__(self,name): self.name = name f = Foo("shuaigaogao") f 是通过 Foo 类实例化的对象,其实,不仅 f 是一个对象,Foo类本身也是一个对象,因为在Python中一切事物都是对象,按照一切事物都是对象的理论:obj对象是通过执行Foo类的构造方法创建,那么Foo类对象应该

深入理解Java对象的创建过程:类的初始化与实例化

"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 深入理解Java对象的创建过程:类的初始化与实例化 - Rico's Blogs - 博客频道 - CSDN.NET Rico's Blogs 潜心修炼,成为一个更好的人. 目录视图 摘要视图 订阅 [活动]2017 CSDN博客专栏评选 &nbsp [5月书讯]流畅

python的变量以及常用的数据类型

有关python的版本和安装以及概念特点可以参考上篇博文,python语言基础 此博文主要讨论问题如下:一.python的变量二.python常用的数据类型 一.什么是python的变量? 变量是计算机内存的一块区域,变量可以存储任何值,而且值可以改变.变量名由字母.数字和下划线组成.需要注意的是,不能使用python的关键字,英文大小写字母敏感,第1个字符必须是字母或下划线,不能是数字,示例代码如下: >>> x=1 >>> _x=2 >>> pri

Windows下python环境变量配置

开始学习python开发时,我们首先要了解python是什么,并且了解python开发的环境以及环境配置,其实很多朋友在对python环境配置(http://www.maiziedu.com/course/python/276-2605/)时会出现各种各样的细节错误,导致浪费很多时间,去解决各种问题.因此,小编在本文中给大家讲讲python环境变量设置的方法. 默认情况下,在windows下安装python之后,系统并不会自动添加相应的环境变量.此时不能在命令行直接使用python命令. 1. 

Android Context创建过程

    特定的资源或者类构成了Android应用程序的运行上下文环境 PackageManager, ClassLoader, Assert等等 Android应用程序窗口的运行上下文环境是通过ContextImpl类来描述的,即每一个Activity组件都关联有一个ContextImpl对象.ContextImpl类继承了Context类,它与Activity组件的关系如图 这个类图在设计模式里面就可以称为装饰模式 Activity组件以后就可以通过这个ContextImpl对象来执行一些具体

设置 Oracle,Sqlplus,Linux 设置为UTF8 专治中文乱码 ,查看表的创建过程

[本文谢绝转载原文来自http://990487026.blog.51cto.com] 思想: 1,设置Linux字符集 为UTF8编码 2,设置Oracle字符集 为UTF8编码 3,设置sqlplus客户端环境 为UTF8编码 4,如果是在Windows使用CRT/Xshell远程工具,请设置软件编码为UTF8[略...] 1,先设置oracle为UTF8 [[email protected] ~]$ sqlplus /nolog SQL> conn /as sysdba; SQL> sh

python基础(2):python的变量和常量

今天看看python的变量和常量:python3 C:\test.py 首先先说一下解释器执行Python的过程: 1. 启动python解释器(内存中) 2. 将C:\test.py内容从硬盘读入内存(这一步与文本编辑器是一样的) 3. 执行读入内存的代码 如果想要永久保存代码,就要用文件的方式如果想要调试代码,就要用交互式的方式 变量是什么? 变:变化,核心在与变化    量:衡量,计量,表达是一种状态 变量的定义 ps: level = 1 level:变量名  =:赋值运算符  1:值