Python可变与非可变数据类型

Python可变与非可变数据类型

引用变量

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

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

a =10

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

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

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

在这里插入图片描述

变量的引用关系

使用内置方法id(),其参数就是要显示的变量信息,id(变量名称)查询内存地址

a =10print(id(a))

把一个变量赋予给另一个变量

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

运行结果:

在这里插入图片描述

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

在这里插入图片描述

若b =a 以后, 改变了变量a的值, 变量是否会改变呢

a =10 b = a a =100print(b)# 10 或 100print(id(a))print(id(b))

运行结果:

在这里插入图片描述

原理图:

在这里插入图片描述

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

可变和非可变数据类型

数据类型

Python中一共有7种数据类型: 数值(int整型, float浮点类型) , bool类型(True和False) , 字符串类型(str) , 元组(tuple) , 列表(list[1, 2, 3]) , 字典(dict {key:value}) , 集合(set {1, 2})

将以上7种数值类型分为两大类型:可变类型 和 非可变类型

可变类型:内存一旦固定,其值就不能发生改变

数值(int整型、float浮点类型)

bool类型(True和False)

字符串类型(str)

元组(tuple 1,2,3)

**不可变类型:**内存地址一旦固定,其值是可以发生改变

列表(list [1, 2, 3])

字典(dict {key:value})

集合(set {1, 2})

判断数据类型是可变型还是非可变型

在Python中,可变类型与非可变类型主要是通过这个数据类型在内存中的表现形式来进行定义的

可变类型就是在内存中,其内存地址一旦固定,其变量的值是可以发生改变的

a =[1,2,3]print(id(a))# 向内存中追加新数据 a.append(4)print(id(a))

运行结果:

在这里插入图片描述

原理图:

在这里插入图片描述

非可变类型就是在内存中,内存地址一旦固定,其变量的值就没办法发生任何改变了

a =10print(id(a)) a ='hello'print(id(a))

运行结果:

在这里插入图片描述

原理图:

在这里插入图片描述

在函数中的应用

可变类型
# 定义一个函数deffunc(ls):# 在函数内部添加元素 ls.append('苹果')print(fruits)# ['草莓', '梨', '香蕉', '西瓜', '苹果']# 定义一个全局变量 fruits =['草莓','梨','香蕉','西瓜']# 调用函数 func(fruits)# 在全局作用域内打印列表print(fruits)# ['草莓', '梨', '香蕉', '西瓜', '苹果']
可变类型在函数中,如果在全局或局部中对可变类型进行增删改操作, 其外部和内部都会受到影响
不可变类型
# 定义一个函数deffunc(num): num +=1print(num)# 11# 定义一个全局变量 a =10# 调用函数 func(a)# 在全局作用域中打印aprint(a)# 10
不可变类型在函数中,局部和全局的改变对外部和内部都没有任何影响

Read more

从社死边缘拯救我:用 AR 眼镜打造“亲戚称呼助手“

从社死边缘拯救我:用 AR 眼镜打造“亲戚称呼助手“

从社死边缘拯救我:用 AR 眼镜打造"亲戚称呼助手 一个真实的新年灾难 大年初二,我跟着新婚妻子回娘家。 刚进门,七大姑八大姨就围了上来。一位头发花白的阿姨笑盈盈地递过来一个红包,我脑子里嗡的一声——这到底是妻子的哪位亲戚?大姨?小姨?还是什么远房表姑? “小张啊,还认识我不?” 我支支吾吾半天,最后还是妻子打了圆场:“这是大姨,小时候还抱过你呢!” 那一刻,我看到了大姨眼里的失望。这种社死现场,相信很多人都经历过:春节期间,走亲访友是必修课,但那些一年见一次的亲戚,名字和称呼根本记不住。尤其是刚结婚的新人、不常回家的打工人,简直是"称呼灾难"高发人群。 回家后,我下定决心:明年春节,我绝不能再叫错人。 思路:为什么是 AR 眼镜? 解决方案无非几种: ● 记在手机备忘录:掏手机、解锁、

By Ne0inhk

Zotero论文阅读标记颜色框架

Zotero论文阅读颜色标记体系总览表 颜色维度名称与用途回顾价值典型示例🟨 黄核心价值核心创新点 / 论点 论文的根本问题与核心解决方案。一分钟回忆起“这篇文章是做什么的”。提出新的稀疏矩阵乘法编码;发现Transformer的访存瓶颈。🟩 绿核心价值关键结果 / 性能指标 最有说服力的量化数据(PPA、准确率等)。验证其声称的成果是否坚实可靠。Speedup 1.5x over SOTA;内存占用减少40%;TFLOPS/W数据。🟥 红核心价值缺陷 / 局限性 / 强假设 作者承认的不足或你发现的逻辑漏洞、不合理设置。决定是否复用该方法,或作为自己研究的切入点。硬件开销过大;实验负载太简单;依赖特定编译器支持。🟦 蓝技术细节方法论 / 架构设计 / 实现细节 具体的硬件设计、算法流程、数据流、内存层次细节。需要复现代码或借鉴具体设计时查阅。Systolic Array的具体尺寸;Cache一致性协议;CUDA kernel优化技巧。🟪 紫技术细节重要公式 / 定义 核心数学推导、模型或特定术语的明确定义。

By Ne0inhk
Moon VR Video Player中文版下载地址及使用教程:支持8K/12K+多音轨外挂字幕 Moon VR Video Player中文版、Moon VR播放器下载、VR视频播放器推荐、Ste

Moon VR Video Player中文版下载地址及使用教程:支持8K/12K+多音轨外挂字幕 Moon VR Video Player中文版、Moon VR播放器下载、VR视频播放器推荐、Ste

Moon VR Video Player中文版下载地址及使用教程:支持8K/12K+多音轨外挂字幕 关键词:Moon VR Video Player中文版、Moon VR播放器下载、VR视频播放器推荐、SteamVR播放器、多音轨外挂字幕播放器、8K 12K VR播放 作为一个长期折腾的开发者,这段时间一直在找一款真正稳定、格式兼容性强、支持多音轨和外挂字幕的VR播放器。市面上不少播放器要么格式支持有限,要么在8K以上直接卡顿,更别说复杂场景下的字幕和音轨切换。 这次测试的是 Moon VR Video Player(月亮播放器)v835 + 2.8.18 中文版,整体体验确实比很多常见播放器更完整。下面做一次系统梳理,方便需要的朋友参考。 下载地址 链接:https://pan.quark.cn/s/7c80590579cf 一、

By Ne0inhk
GCC编译(6)静态库工具AR

GCC编译(6)静态库工具AR

GCC编译(6)静态库工具AR Author: Once Day Date: 2026年2月20日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章可参考专栏: 编译构建工具链_Once-Day的博客-ZEEKLOG博客 参考文章:ar(1) - Linux manual page【Linux】ar命令:用于创建、修改和提取静态库(archive)-ZEEKLOG博客Linux命令学习手册-ar - 知乎Linux ar命令介绍 和常用示例 - Link_Z - 博客园 文章目录 * GCC编译(6)静态库工具AR * 1. AR工具概述 * 1.1 背景介绍 * 1.2 基础使用

By Ne0inhk