python笔记

来源:互联网 发布:锥套皮带轮锥度算法 编辑:程序博客网 时间:2024/06/05 10:16

Python对象的id,type都是不可变的(type特殊情况下可以改变,但并不好,所以可以认为type也是不变的)。

值也不能改变的对象称为不可变对象。

 

对象的可变性、可能具有的取值、可以进行的操作(方法)、最多有几个该类型的对象(如None,NotImplmented,Ellipsis类型均只有1个对象)均由对象的类型决定。

 

不可变:数值、字符串、元组。

可变对象:字典,列表。

 

对于不可变容器(如元组),其中引用的对象若属于可变对象,其对象的值可以改变,但是不可变容器还是认为是不可变的,因为其中的引用(对象ID)不可变。

 

对于可变容器(如字典、列表)

大多数情况下,当我们谈到一个容器的值时,我们是指值,而不是所包含的对象的ID;然而,当我们谈论容器对象的可变性的时候,就只是指被直接包含的对象的ID因此,如果一个不可变对象(如元组)包含了一个可变对象的引用,那么当这个可变对象的值改变时它的值也发生改变。

 

 

 

如果一个命名声明为全局的,那么对它的所有引用和赋值会直接搜索包含这个模块全局命名的作用域。否则,在最里面作用域之外找到的所有变量都是只读的(对这样的变量赋值会在最里面的作用域创建一个 的局部变量,外部具有相同命名的那个变量不会改变)。

Python的一个特别之处在于——如果没有使用global语法——其赋值操作总是在最里层的作用域。赋值不会复制数据——只是将命名绑定到对象。删除也是如此:del x只是从局部作用域的命名空间中删除命名x

0 0
原创粉丝点击