Python---引用变量与可变、非可变类型

news2024/9/29 23:25:48

引用变量

在大多数编程语言中,值的传递通常可以分为两种形式“  值 传递  与  引用 传递”,但是在Python中变量的传递基本上都是引用传递

变量在内存底层的存储形式

a = 10

第一步:首先在计算机内存中创建一个数值10(占用一块内存空间)

第二步:在栈空间中声明一个变量,如a

第三步:把数值10的内存地址赋予给变量小a,形成所谓的“引用关系”

验证Python中变量的引用关系

可以使用内置方法id(),其参数就是要显示的变量信息 => id(变量名称)


a = 10
print(id(a))


把一个变量赋予给另外一个变量的影响


a = 10
b = a
print(id(a))
print(id(b))

运行结果:

说明:由以上运行结果可知,当我们把一个变量赋予给另外一个变量时,其两者指向的内存地址相同。就说明a和b指向了同一块内存空间,原理图如下:

思考:如果在b = a以后,我们改变了变量a的值,问变量b是否会受到影响?


# a = 10
# print(id(a))

a = 10
b = a

a = 100
print(b)  # 10 或 100

print(id(a))
print(id(b))

原理图:

总结:不可变数据类型(数值)在赋值以后,其中一个值的改变不影响另外一个变量,因为两者指向空间地址不同。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1261843.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IP-Adapter:文本兼容图像提示适配器,用于文本到图像扩散模型

IP-Adapter这是一种有效且轻量级的适配器,用于实现预训练文本到图像扩散模型的图像提示功能。只有 22M 参数的 IP 适配器可以实现与微调图像提示模型相当甚至更好的性能。IP-Adapter 不仅可以推广到从同一基本模型微调的其他自定义模型,还可以推广到使用…

Leetcode—1670.设计前中后队列【中等】

2023每日刷题(四十三) Leetcode—1670.设计前中后队列 实现代码 erase(iterator position)在删除vector中的元素后,会将该元素的后面所有元素都往前挪一位。因此,原先的迭代器指向的元素就不是原来那个了,而是它的后…

C#-创建用于测试的父类StartupBase用于服务注入

当写完C#代码,需要对某个方法进行测试。 创建一个XXXTests.cs文件之后,发现需要注入某个服务怎么办? 再创建一个StartupBase.cs文件: public abstract class StartupBase {public IConfiguration Configuration { get; }public …

Axios 并发请求指南 - 3 种简单实用的方法

在实际开发中,我们经常需要同时发送多个请求,并在所有请求完成后进行处理,这就是所谓的并发请求。实现 Axios 并发请求的关键是使用 Axios.all 方法,它接受一个 Promise 的数组作为参数,当这些 Promise 都 resolve 时&…

vscode 插件TODO TREE简单使用

上面的标签和下面的颜色一一对应(下面一个是背景颜色一个是前景颜色),如果上面的标签个数大于下面颜色个数则从头开始

2023年全国硕士研究生入学统一考试管理类专业学位联考英语(二)试题

2023年全国硕士研究生招生考试英语(二)试题 Section I Use of English Here’s a common scenario that any number of entrepreneurs face today: you’re the CEO of a small business, and though you’re making a nice (1)…

linux 安装 mvn

mvn 下载地址:https://maven.apache.org/download.cgi 选择一个合适的版本 cd /opt && curl -o apache-maven-3.8.6-bin.tar.gz https://dlcdn.apache.org/maven/maven-3/3.8.6/binaries/apache-maven-3.8.6-bin.tar.gz tar -xzf apache-maven-3.8.6-bin.…

Net6.0或Net7.0项目升级到Net8.0 并 消除.Net8中SqlSugar的警告

本文基于NetCore3.1或Net6.0项目升级到Net7.0,参考连接:NetCore3.1或Net6.0项目升级到Net7.0-CSDN博客 所有项目按照此步骤操作一遍,完成后再将所有引用的包(即 *.dll)更新升级到最新版(注意:有…

(免费领源码)java#ssm#mysql 招聘客户管理系统78049-计算机毕业设计项目选题推荐

摘 要 由于数据库和数据仓库技术的快速发展,招聘客户管理系统建设越来越向模块化、智能化、自我服务和管理科学化的方向发展。招聘客户系统对处理对象和服务对象,自身的系统结构,处理能力,都将适应技术发展的要求发生重大的变化。…

GaussDB数据库SQL系列-触发器

目录 一、前言 二、触发器概念 三、GaussDB数据库中的触发器 1、语法格式 2、创建步骤 3、注意事项 4、附:表和视图上支持的触发器种类 四、GaussDB数据库中的示例 示例一、在GaussDB数据库中创建一个触发器,以便在插入新记录时自动将记录的创建…

WebGL技术框架及功能

WebGL(Web Graphics Library)是一种用于在Web浏览器中渲染交互式3D和2D图形的JavaScript API。它允许在不需要插件的情况下,在支持WebGL的浏览器中直接运行高性能的图形渲染。WebGL没有一个固定的技术框架,而是基于JavaScript API…

提升业务质量:实践中应用跨境电商ERP源码

作为跨境电商领域的专家,我们深知业务质量对于企业的重要性。在这篇文章中,我将向您介绍如何通过应用跨境电商ERP源码来提升业务质量。 跨境电商ERP源码的优势 跨境电商ERP源码为企业提供了一种全面管理业务的解决方案。它集成了订单管理、库存管理、供…

虚幻学习笔记2—点击场景3D物体的两种处理方式

一、前言 本文使用的虚幻引擎为5.3.2,两种方式分别为:点击根物体和精准点击目标物体。 二、实现 2.1、玩家控制器中勾选鼠标点击事件:这一步很重要,如图2.1.1所示:在自定义玩家控制器中勾 图2.1.1 选该项&#xff0c…

win11系列:避坑宝典|win11升级最新预览体验版bug梳理

win11系列:避坑宝典|win11升级最新预览体验版bug梳理 一、亲测win11升级的前世今生。(一)问题描述梳理。(二)故障原因分析。(三)具体解决方案。2.【已解决】①尝试关Hyper-v重启;②从…

“2024杭州人工智能展览会”加快推进浙江省人工智能产业创新发展

杭州市人民政府加快推进人工智能产业创新发展,贯彻党的二十大精神和新的发展理念,把握人工智能技术演进趋势和创新发展新范式,以促进人工智能与实体经济深度融合为主线,以优质算力普惠供给为基础,到2025年,…

Python自动化办公:PDF文件的分割与合并

我们平时办公中,可能需要对pdf进行合并或者分割,但奈何没有可以白嫖的工具,此时python就是一个万能工具库。 其中PyPDF2是一个用于处理PDF文件的Python库,它提供了分割和合并PDF文件的功能。 在本篇博客中,我们将详细…

「Verilog学习笔记」信号发生器

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 方波的实现,较为简单,只需要设置一个计数器,使输出保持10个时钟为0,跳变为20,再保持10个时钟。依次循环。可以按…

LeetCode [中等]3. 无重复字符的最长子串

3. 无重复字符的最长子串 - 力扣(LeetCode) 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 1. 滑动窗口(Sliding Window): 滑动窗口是一种用于处理数组或列表的子数组或子序列的问题…

信奥编程 1168:大整数加法

解析:在c中需要考虑这么几个问题,第一个是大数据的输入,第二个是大数据的存储,第三是大数据的计算方式,最后是输出。 针对上述几个问题,第一个问题,采用字符串的方式或者数组加循环的方式接收输…

视频文件+EasyDarwin做摄像机模拟器模拟RTSP流很方便,还能做成系统服务,方法与流程

之前我看到过一家人工智能做算法的企业,用EasyDarwinFFMPEG做了一个摄像机的模拟器,方法大概是: 用ffmpeg读取mp4等类型的视频文件(当然ffmpeg啥都能读取),再以RTSP协议的形式推送给EasyDarwin&#xff1b…