返回介绍

第 8 章 对象引用、可变性和垃圾回收

发布于 2024-02-05 21:59:47 字数 653 浏览 0 评论 0 收藏 0

“你不开心,”白骑士用一种忧虑的声调说,“让我给你唱一首歌安慰你吧……这首歌的曲名叫作 :《黑线鳕的眼睛》。”

“哦,那是一首歌的曲名,是吗?”爱丽丝问道,她试着使自己感到有兴趣。

“不,你不明白,”白骑士说,看来有些心烦的样子,“那是人家这么叫的曲名。真正的曲名《老而又老的老头儿》。”(改编自第 8 章“这是我自己的发明”)

——Lewis Carroll
《爱丽丝镜中奇遇记》

爱丽丝和白骑士为本章要讨论的内容定了基调。本章的主题是对象与对象名称之间的区别。名称不是对象,而是单独的东西。

本章先以一个比喻说明 Python 的变量:变量是标注,而不是盒子。如果你不知道引用式变量是什么,可以像这样对别人解释别名。

然后,本章讨论对象标识、值和别名等概念。随后,本章会揭露元组的一个神奇特性:元组是不可变的,但是其中的值可以改变,之后就引申到浅复制和深复制。接下来的话题是引用和函数参数:可变的参数默认值导致的问题,以及如何安全地处理函数的调用者传入的可变参数。

本章最后一节讨论垃圾回收、del 命令,以及如何使用弱引用“记住”对象,而无需对象本身存在。

本章的内容有点儿枯燥,但是这些话题却是解决 Python 程序中很多不易察觉的 bug 的关键。

首先,我们要抛弃变量是存储数据的盒子这一错误观念。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文