写在前边
命名空间,在我们上面类引用的一课程中已经接触到了,这一节我们着重地看一下命名空间在python中的使用。
我们联想一下其它的语言
java中,我们使用包名来管理命名空间。
php在5.3之后,也引入了命名空间的概念,以反斜杠+空间名的形式来实现
在oc中,使用一个统一的前缀来实现命名空间
你看,每一种语言都有它不太相似的命名空间形式,但是目的都是一样的,都给自己添了个姓氏,就是为了减少在同一个教室里被点错名的事故发生。
我们看一下pyton中的命名空间:
命名空间的种类
一般有三种命名空间:
内置名称(built-in names): Python 语言内置的名称,比如函数名 abs、char 和异常名称 BaseException、Exception 等等。
全局名称(global names):模块中定义的名称,记录了模块的变量,包括函数、类、其它导入的模块、模块级的变量和常量。
局部名称(local names):函数中定义的名称,记录了函数的变量,包括函数的参数和局部定义的变量。(类中定义的也是)
global 和 nonlocal关键字
以下实例修改全局变量 num:
num = 1
def fun1():
global num # 需要使用 global 关键字声明
print(num)
num = 123
print(num)
fun1()
print(num)
#输出结果
1
123
123
如果要修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量则需要 nonlocal 关键字了,如下实例:
def outer():
num = 10
def inner():
nonlocal num # nonlocal关键字声明
num = 100
print(num)
inner()
print(num)
outer()
#输出结果
100
100
网友评论