跳至内容

Python 命名空间

Python中,命名空间用于在程序中存储变量值和其他对象,并将其关联到一个特定名称。

这样,我们可以对不同代码部分的不同变量或对象,使用相同的名称而不会引起任何的冲突。

Python命名空间类型

  • build-in 内置命名空间
  • global 全局命名空间
  • local 局部命名空间

内置命名空间

在Python解释器运行后会创建一个包含所有的内置名称的命名空间(内置命名空间),并且会在解释器运行期间一直存在。内置命名空间可以通过 builtins 模块来访问。

全局命名空间

每个模块都会创建自己的global全局命名空间,这些命名空间是独立的, 因此同样的名称可以存在不同的模块而不冲突。一个模块只有一个命名空间,模块内的函数都可以访问这个空间。

局部命名空间

当函数调用时,会创建local局部命名空间, 用于存储函数的局部变量、参数等。函数调用结束后销毁。

Python命名空间

Python变量作用域

Python中,至少有三种嵌套作用域。

  1. 局部local:当前函数作用域
  2. 全局global:当前模块作用域
  3. 内置builtin:最外层作用域

当函数呢创建引用时,首先会查找局部作用域,然后查找全局作用域,最后查找内置作用域。

例 1:Python命名空间和作用域

输入

python
# 全局命名空间的变量global_var
global_var = 5

def outer_function():
    # 外层局部作用域变量outer_var
    outer_var = 10

    def inner_function():
        # 内层局部作用域变量inner_var
        inner_var = 15
        print(inner_var)

    print(outer_var)
    inner_function()

# 打印全局变量global_var
print(global_var)
# 调用outer_function函数,打印局部作用域变量
outer_function()
# 全局命名空间的变量global_var
global_var = 5

def outer_function():
    # 外层局部作用域变量outer_var
    outer_var = 10

    def inner_function():
        # 内层局部作用域变量inner_var
        inner_var = 15
        print(inner_var)

    print(outer_var)
    inner_function()

# 打印全局变量global_var
print(global_var)
# 调用outer_function函数,打印局部作用域变量
outer_function()

输出

5
10
15
5
10
15

例 2:global关键字

输入

python
# 定义全局变量
global_var = 5

def modify_function():
    # 定义局部变量
    local_var = 10

    # 修改全局变量
    global global_var
    global_var = 20

# 打印全局变量
print(global_var)

# 调用修改函数
modify_function()

# 打印全局变量修改后的值
print(global_var)
# 定义全局变量
global_var = 5

def modify_function():
    # 定义局部变量
    local_var = 10

    # 修改全局变量
    global global_var
    global_var = 20

# 打印全局变量
print(global_var)

# 调用修改函数
modify_function()

# 打印全局变量修改后的值
print(global_var)

输出

5
20
5
20

这里,在函数 modify_function 调用时,通过global关键字说明global_var是一个全局变量。