Python3:可变,不可变……一切都是对象! –杜尚塞米恩
Python3:可变,不可变……一切都是对象!
Python非常灵活。 python的根源是动态的,解释的(字节码编译的)语言。 在源代码中没有变量,参数,函数或方法的类型声明。 这使得代码简短而灵活。 Python在运行时跟踪所有值的类型,并标记在运行时没有意义的代码。
让我们看一下id和类型。 id是一个具有单个参数并返回对象标识的函数。 该整数通常对应于对象在内存中的位置,尽管它特定于Python实现和所使用的平台。 对象的类型本身就是对象。 此类型对象是唯一定义的,并且对于给定类型的所有实例始终是相同的。 因此,可以使用is运算符比较类型。 为所有类型对象分配了可用于执行类型检查的名称。
在这里,事情可能会变得有些混乱,同时又令人惊奇。 python中的数据类型具有可变或不可变的能力。 可变对象是创建后可以更改的对象。 可变对象由列表,字典,集合和字节数组组成。 因此,不变对象在创建后就无法更改,它们由int,float,complex,string,tuple,frozen set组成。
但是,仅仅因为一个对象是不可变的并不意味着它不能被修改。 这是面向对象语言的魔力。 它是这样工作的:假设您有一个由不可变和可变数据类型组成的元组。 元组不能更改,字符串也不能更改对象可以更改的值,而不能更改值。
参考文献: