【发布时间】:2016-09-28 21:00:47
【问题描述】:
我了解 Python 中可变对象和不可变对象之间的区别。我已经阅读了许多讨论差异的帖子。但是,我还没有读到关于为什么整数是不可变对象的任何内容。
这有什么原因吗?还是答案“就是这样”?
编辑:系统提示我将此问题与其他问题“区分开来”,因为它似乎是以前提出的问题。但是,我相信我要问的是一个哲学 Python 问题,而不是一个技术 Python 问题。
Python 中的“原始”对象(即字符串、布尔值、数字等)似乎是不可变的。我还注意到由原语(即字典、列表、类)组成的派生数据类型是可变的。
无论对象是否可变,这就是画线的地方吗?原始与派生?
【问题讨论】:
-
你想要对一个整数进行变异究竟是什么?位?
-
假设某些类型的不变性可以实现各种优化。这些优化对于
str来说是最 发音的,但它们对于int、float、tuple、frozenset也起作用......有些人可能会认为不变性使代码在很多情况下也更容易阅读。再加上没有一种自然的方法可以改变整数(+=、*=、...... 相当罕见......),而且似乎没有充分的理由去改变整数。没有不可变的整数。 -
如果您可以将
1的值修改为2,并将2的值修改为1,那么2 + 2 == 1将是true;这真的是你想要的吗? -
您可能会发现abarnert's answer(对上面由 StanleyR 链接的问题)很有帮助。
标签: python immutability mutable