您不能修改不可变的Python对象,您可以简单地创建具有新值的新对象:
n = 1
id(n)
output: 123
n = n + 1
id(n)
output: 140不过,您可以修改可变对象:
m = [1]
id(m)
output: 210
m.append(2)
id(m)
output: 210我在徘徊,在C/C++中,与Python的可变/不变对象最接近的概念是什么?
发布于 2014-12-11 20:21:36
简单:const对象
更复杂的是:由于python遵循引用语义,所以一切都可以粗略地看作是一个泛型指针。一个指针,可以重新分配,但它所指向的是不能改变的是指向const的指针,这就是我认为您想要的。
int i;
int j;
const int *p =&i;
p = &j;
*p = 1; // error但是,由于python动态地分配它的对象,而且C不会这样做,除非被告知这样做,所以不能像下面这样做并且得到与python相同的行为
*p = *p + 1;所以它仍然缺乏,但它是最接近我认为你可以得到的东西,而不是真正的人为。
发布于 2014-12-11 20:25:19
不可变是一个通常在函数式编程中存在的概念(尽管它对OOP也很重要):
C/C++具有不可变性(通过const),但由于指针和访问/修改进程所拥有的任意内存的能力,C/C++大多是围绕可变性(C比C++)构建的。即使是康斯特也有漏洞:
https://stackoverflow.com/questions/27431346
复制相似问题