什么是命名空间
命名空间是一个系统,它为Python中的每个对象提供唯一的名称。对象可以是变数或方法。Python本身以Python字典的形式维护命名空间。让我们来看一个例子,计算机中的目录文件系统结构。不用说,一个人可以拥有多个目录,每个目录中都有一个具有相同名称的文件。但是,人们可以通过指定文件的绝对路径来定向文件。
实时示例,命名空间的作用就像一个姓氏。有人可能在课堂上找不到一个「爱丽丝」可能会有多个「爱丽丝」,但当你特别要求「爱丽丝李」或「爱丽丝克拉克」(带姓氏)时,只会有一个(时间不是』)想到多名学生的名字和姓氏都是一样的)。
在类似的路线上,Python解释器理解在代码中试图指向的确切方法或变数,具体取决于命名空间。因此,单词本身的划分提供了更多的信息。它的名称(表示名称,唯一标识符)+ 空格(表示与范围相关的内容)。这里,名称可能是任何Python方法或变数,空间取决于尝试访问变数或方法的位置。
命名空间的类型
当Python解释器完全没有和用户定义的模块,方法,类等运行时,一些函数如print(),id()总是存在,这些函数是在命名空间中构建的。当用户创建模块时,将创建全局命名空间,稍后创建本地函数将创建本地命名空间。在内置的命名空间包含全局命名空间和全局命名空间包含局部命名空间。
命名空间的生命周期
命名空间的生命周期取决于对象的范围,如果对象的范围结束,则该命名空间的生命周期结束。因此,无法从外部命名空间访问内部命名空间的对象。
# var1 is in the global namespace
var1 = 5
def some_func():
# var2 is in the local namespace
var2 = 6
def some_inner_func():
# var3 is in the nested local
# namespace
var3 = 7
如下图所示,相同的对象名称可以存在于多个名称空间中,因为同名的名称由其名称空间维护。