详解python命名空间

  • Post category:Python

Python命名空间是指变量存储的位置,每个变量都需要存储到内存中,而存储在内存中的变量需要分配一个唯一的标识符,这个标识符称之为命名空间。在Python中命名空间以字典的形式实现,它支持查找和更新操作,其中键为变量名,值为变量值。

Python中有三种不同的命名空间:内置命名空间(built-in),全局命名空间(global),局部命名空间(local)。

内置命名空间是Python解释器的一部分,包含了Python所有内置函数和异常。当解释器启动时,内置命名空间就被创建并初始化了。

全局命名空间是指模块级别的命名空间,它在模块定义时创建,模块中定义的函数、变量之类的都存在于该命名空间中。

局部命名空间可以在函数调用到的时候才创建,它是在函数调用时才会创建的,函数执行完毕后,该命名空间就被删除了。

  1. 访问命名空间中的变量

代码示例:

def example():
    num = 10  # 局部命名空间变量
    print(num)

num = 20  # 全局命名空间变量
example()
print(num)

输出结果如下:

10
20

解释:在example函数中,变量num是一个局部命名空间的变量。在全局命名空间中定义了变量num,它的值为20。然后调用example()函数,打印输出局部变量num的值,输出结果为10。接着在程序的最后打印输出全局变量num的值,输出结果为20。

  1. 修改命名空间中的变量

代码示例:

def example():
    global num
    num = 10  # 全局命名空间变量
    print(num)

num = 20  # 全局命名空间变量
print(num)
example()
print(num)

输出结果如下:

20
10
10

解释:在example函数中,通过global关键字将变量num声明为全局变量,并将变量的值修改为10。在全局命名空间中定义了变量num,它的值为20。然后调用example()函数,打印输出全局变量num的值,输出结果为10。最后在程序的最后打印输出全局变量num的值,输出结果为10。