其中哪些在Python中是不变的?
|
我试图弄清楚以下内容在Sage中是否是不可变的(它是基于Python构建的,因此我相信如果它在python中是不可变的,我相信在大多数情况下它将在Sage中是不可变的)
以下是对象e,f,g,i
class e: pass
f = e()
g = pi # (g\'s \"type\" in Sage is symbolic expression. It\'s supposed to be 3.1415....etc)
i = lambda x: x*x
我认为e是一个类,这意味着它是可变的(不可变的类有意义吗?难道不是所有类都可以修改吗?)。由于f是类的实例,因此我猜测它也是可变的,因为类是可变的。
由于数字在Python中是不可变的,因此g也应该是不可变的,因为尽管它是非理性的,但g是一个数字
最后,我是一个函数,这意味着它应该是可变的?
我不太确定我了解不变性的概念。函数不可变意味着什么?班级是一成不变的?
没有找到相关结果
已邀请:
2 个回复
怪酞撩匹
是可变的。例如,您可以在类
上添加一个新方法。
是可变的。例如,您可以向该类实例添加一个新字段:“ 4”。
是不变的。您无法更改任何内容。
不是一成不变的。您可以对它做各种邪恶的事情:
之后,
将变为123而不是100。(您也可以对它做更多合理的事情。ѭ9After之后,
会得到更有益的结果。) 如果您可以对某个对象执行某些操作以更改其将来的可能行为,则该对象是可变的。您无法更改
的行为;您可以更改功能对象,类,类实例或列表的行为。 (但不是元组。一旦创建了元组,它就会一直存在直到存在。)
焙恍挝厂熄
数字是不可变的,因此它们的值不能改变。相反,必须更新变量以引用完全不同的对象:
不变性是一个重要的概念,因为知道对象的值是不变的,您可以对它做出某些假设(例如,
实际上需要不可变键,
和
需要不可变成员,作为对象的值)影响应如何将其存储在数据结构中。如果允许使用可变条目,则在存储后对其进行了修改,它们可能最终放在错误的位置) 与普遍的看法相反,不会覆盖相等性定义的用户定义类在技术上是不可变的。这是因为用户定义类的\“ value \”的默认定义仅为
。当一个对象的值是它的身份时,很显然它们没有办法随时间变化,因此该对象不能视为“可变”。 非正式地?大多数人都按照Gareth McCaughan的回答使用直观的“我可以更改吗?”定义。它与形式定义具有相同的基本思想,只是在相等性检查方面使用的术语“值”比技术定义更广泛的含义。