【发布时间】:2011-01-11 13:27:20
【问题描述】:
我已经阅读了一些 Python 教程(其中之一是 Dive Into Python),以及 Python.org 上的语言参考 - 我不明白为什么该语言需要元组。
与列表或集合相比,元组没有方法,如果我必须将元组转换为集合或列表才能对它们进行排序,那么首先使用元组有什么意义?
不变性?
为什么有人会关心变量在内存中的位置是否与最初分配时不同? Python 中的整个不可变性业务似乎被过分强调了。
在 C/C++ 中,如果我分配一个指针并指向某个有效内存,我不关心地址的位置,只要在我使用它之前它不为空即可。
每当我引用该变量时,我不需要知道指针是否仍指向原始地址。我只是检查 null 并使用它(或不使用它)。
在 Python 中,当我分配一个字符串(或元组)将其分配给 x,然后修改该字符串时,我为什么要关心它是否是原始对象?只要变量指向我的数据,这就是最重要的。
>>> x='hello'
>>> id(x)
1234567
>>> x='good bye'
>>> id(x)
5432167
x还是引用了我想要的数据,为什么还要关心它的id是相同还是不同呢?
【问题讨论】:
-
你注意到了可变性的错误方面:“id 是相同还是不同”只是一个副作用; “以前指向同一对象的其他引用指向的数据现在是否反映更新”很关键。