以下内容是python tutorial的读书笔记:
一.命名空间的分层
二.local赋值语句,nonlocal和global的区别
local赋值语句,它是无法实现对于最里层的作用域的重新绑定的
nonlocal,它是可以实现对于最里层的作用域的重新绑定的
global,它可以实现模块级的参数绑定
下面举一个典型的例子:
它的输出是:
说明:第一个是local赋值语句,当前最里面的作用域是scope_test,它对于spam进行了预绑定,但是local赋值语句是没有办法改变它的;第二个是nonlocal赋值语句,它能够实现对于最里面作用域的重新绑定,因此现在的spam的值改变了;第三个是global赋值语句,因为它实现的是模块级的参数绑定,因此我们在scope_test内打印spam,此时spam的作用域还处于最里面的作用域,因此它的值是经由nonlocal改变之后的值,而我们在中间层,也就是模块级的时候输出spam的时候,因为我们已经执行了global参数绑定,因此 此时的全局命名空间中已经有了spam,它的值就是在do_global中spam被赋予的值
三.python中实例变量和类变量的区别
实例变量和类变量的区别在于前者是private,后者是public。简单来说,如果创建了多个实例,那么实例变量就是每个实例自己拥有的变量,而类变量则是每个实例共享的变量