news 2026/6/10 20:01:27

在Python中,不可变(immutable)数据类型是指一旦创建后,其内容不能被修改的数据类型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在Python中,不可变(immutable)数据类型是指一旦创建后,其内容不能被修改的数据类型

在Python中,不可变(immutable)数据类型是指一旦创建后,其内容不能被修改的数据类型。

  • A.list:可变(mutable),可以添加、删除、修改元素;
  • B.dict:可变,键值对可以增删改;
  • C.set:可变,元素可以添加或移除;
  • D.tuple:✅ 不可变,创建后不能修改其元素(包括增、删、改),若包含可变对象(如列表),该对象自身可变,但tuple的引用不可变。

因此,正确答案是:D. tuple

# 示例验证t=(1,2,3)# t[0] = 99 # ❌ TypeError: 'tuple' object does not support item assignment# t.append(4) # ❌ AttributeError: 'tuple' object has no attribute 'append'# 对比 listl=[1,2,3]l[0]=99# ✅ 允许l.append(4)# ✅ 允许

是的,即使元组中包含一个列表,整个元组本身仍然被视为不可变类型

✅ 原因:
“不可变”指的是元组对象自身的结构和元素引用不可更改——即不能增删元素、不能对元组索引赋值、不能调用修改方法(如append())。但若元组中某个元素本身是可变对象(如listdictset),该嵌套对象的内容仍可被原地修改,因为元组只保存对其的引用,不控制其内部状态。

⚠️ 注意:这不违背元组的不可变性,因为元组并未“改变自身引用”,只是它所引用的可变对象发生了变化。

🔍 示例说明:

t=(1,[2,3],"hello")print(t)# (1, [2, 3], 'hello')# ✅ 允许:修改嵌套列表的内容(列表自身可变)t[1].append(4)print(t)# (1, [2, 3, 4], 'hello') —— 元组内容看似变了,但元组对象未被“重新赋值”或“结构调整”# ❌ 禁止:试图替换元组中的元素# t[1] = [5, 6] # TypeError: 'tuple' object does not support item assignment# ❌ 禁止:试图给元组添加元素# t += (99,) # 这会创建新元组,原元组不变;原t对象地址已变(若重新赋值)# 验证身份(id):original_id=id(t)t=t+(99,)# 创建新元组 → 新idprint(id(t)==original_id)# False → 原元组未被修改,只是变量指向了新对象

📌 关键结论:

  • 元组的不可变性是浅层的(shallow immutability),仅保证其直接元素的引用不可变;
  • 不保证嵌套可变对象的深层内容不可变;
  • 正因如此,含可变对象的元组不能作为字典的键(除非该元组在生命周期内其嵌套可变对象未被修改,但Python不检查运行时内容,故仍会报错):
d={}# d[t] = "value" # ❌ TypeError: unhashable type: 'list' —— 因为t含list,整体不可哈希

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 19:59:21

MT8766 去除锁屏、永不熄屏、默认亮度、横屏显示

默认亮度 改为100% 对于默认亮度, vendor/mediatek/proprietary/packages/apps/SettingsProvider/res/values/defaults.xml文件中的 <integer name="def_screen_brightness">102</integer> 和vendor/mediatek/proprietary/packages/overlay/vendor/Fr…

作者头像 李华
网站建设 2026/6/10 19:58:37

中小企业如何拥抱AI+Headless Agent数据库运维

在上一篇文章中&#xff0c;我们从技术架构角度深入分析了 Web 架构与 AI 无头代理的天然契合性&#xff0c;拆解了 AIHeadless Agent 的四层核心技术架构。很多中小企业读者看完后留言问&#xff1a;AI 无头代理听起来很强大&#xff0c;但会不会像传统数据中台一样&#xff0…

作者头像 李华
网站建设 2026/6/10 19:58:33

【智能制造】-APS系列|22 生产线最优化:生产线平衡

将产线上各工作站的作业量平均化&#xff0c;消除工序间作业时间差距&#xff0c;消除工序等待、平均作业负荷&#xff0c;生产线平衡是APS排产提效的关键手段在制造业现场&#xff0c;生产线平衡是优化产线效率、减少浪费的基础方法。产线各工序作业时间不均&#xff0c;会导致…

作者头像 李华
网站建设 2026/6/10 19:55:24

个人总结 搭建Docker监控

监控 Docker系统 ​ Prometheus Grafana 监控 Docker 系统搭建指南。 要实现对 Docker 的全面监控&#xff0c;需要按照以下步骤搭建 Prometheus 和 Grafana 并进行配置&#xff1a; 4.1、安装 Prometheus下载并解压 Prometheus wget https://github.com/prometheus/prometheu…

作者头像 李华
网站建设 2026/6/10 19:55:12

个人总结 docker搭建家庭媒体库Jellyfin

Jellyfin​ Jellyfin 是一个开源媒体服务器项目&#xff0c;旨在让用户自行搭建并管理音视频流媒体库。它提供与商业媒体服务器&#xff08;如 Plex 或 Emby&#xff09;类似的功能&#xff0c;但完全免费且无专有组件或遥测功能。 ​ Jellyfin 允许用户在自有服务器上集中管理…

作者头像 李华