- 本书赞誉
- 前言
- 目标读者
- 不适合阅读本书的读者
- 本书结构
- 什么是数据处理
- 遇到困难怎么办
- 排版约定
- 使用代码示例
- 致谢
- 第 1 章 Python 简介
- 第 2 章 Python 基础
- 第 3 章 供机器读取的数据
- 第 4 章 处理 Excel 文件
- 第 5 章 处理 PDF 文件 以及用 Python 解决问题
- 第 6 章 数据获取与存储
- 第 7 章 数据清洗:研究、匹配与格式化
- 第 8 章 数据清洗:标准化和脚本化
- 第 9 章 数据探索和分析
- 第 10 章 展示数据
- 第 11 章 网页抓取:获取并存储网络数据
- 第 12 章 高级网页抓取:屏幕抓取器与爬虫
- 第 13 章 应用编程接口
- 第 14 章 自动化和规模化
- 第 15 章 结论
- 附录 A 编程语言对比
- 附录 B 初学者的 Python 学习资源
- 附录 C 学习命令行
- 附录 D 高级 Python 设置
- 附录 E Python 陷阱
- 附录 F IPython 指南
- 附录 G 使用亚马逊网络服务
- 关于作者
- 关于封面
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
E.7 修改不可变对象
想要修改或改变不可变对象时,你需要创建新的对象。Python 不会允许你修改不可变对象,例如元组。在我们讨论 Python 内存管理时,你已经知道一些对象保存在相同的空间中。不可变对象不能被改变,它们总是被重新赋值。让我们看一下:
In [1]: my_tuple = (1,) In [2]: new_tuple = my_tuple In [3]: my_tuple Out[3]: (1,) In [4]: new_tuple Out[4]: (1,) In [5]: my_tuple += (4, 5) In [6]: new_tuple Out[6]: (1,) In [7]: my_tuple Out[7]: (1, 4, 5)
可以看到,我们尝试使用 += 操作符去修改原始的元组,并且我们能够成功地做到这一点。然而,我们得到的是一个包含原始元组和追加了元组(4, 5)的新对象。我们最终没有改变 new_tuple 变量,因为我们只是将内存中的一个新地址赋给新的对象。如果你在查看 += 操作之前和之后查看内存地址,你会看到它的改变。
关于不可变对象需要记住的重点是,当改变它们的时候,它们不会使用内存中相同的地址;如果你修改它们,你实际上在创建全新的对象。如果你使用一个拥有不可变对象的类的方法或属性,尤其要记住这一点,因为你要确保自己知道何时在修改它们,何时在创建新的不可变对象。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论