所有的变量都可以理解是存中一个对象的“引用”,或者,也可以看似
c
中
void*
的感觉。
这里记住的是类型是属于对象的,
而不是变量。
而对象有两种
,
“
可更改”
(
mutable
)
与“不可更改”
(
immutable
)对象。在
python
中,
strings, tuples,
和
numbers
是不可
更改的对象,而
list,dict
等则是可以修改的对象。
(
这就是这个问题的重点
)
当一个引用传递给函数的时候
,
函数自动复制一份引用
,
这个函数里的引用和外边的
引用没有半毛关系了
.
所以第一个例子里函数把引用指向了一个不可变对象
,
当函数
返回的时候
,
外面的引用没半毛感觉
.
而第二个例子就不一样了
,
函数的引用指向的是
可变对象
,
对它的操作就和定位了指针地址一样
,
在存里进行修改
.
2 Python
中的元类
(metaclass)
元类就是用来创建类的“东西”。你创建类就是为了创建类的实例对象,但是我们
已经学习到了
Python
中的类也是对象。
好吧,
元类就是用来创建这些类
(对象)
的,
元类就是类的类
这个非常的不常用
,
详情请看:《
深刻理解
Python
中的元类
(metaclass)
》