You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python命名空间(namespace)是什么?请求深入讲解

Python命名空间到底是什么?

直观理解命名空间

你可以把命名空间当成分类存放名字的容器——就像办公室的文件柜,每个抽屉对应一个命名空间,抽屉里的文件夹就是变量、函数、类这些Python对象,文件夹上的标签就是对象的名字。

同一个抽屉里不能有两个完全一样的标签(避免冲突),但不同抽屉可以有同名标签。比如你在自己的抽屉里放了个叫"report"的文件夹,同事抽屉里也能有个"report"文件夹,互相不干扰——这就是命名空间解决重名冲突的核心作用。

字典实现到底是什么意思?

Python里的命名空间本质就是一个普通的字典:字典的键是对象的名字(字符串形式),对应的值就是那个对象本身。

当你在代码里写a = 5时,Python其实是在当前命名空间的字典里新增了一对键值对:'a': 5。你可以用locals()或globals()函数直接查看这些字典:

# 全局命名空间的字典
a = 5
print(globals()['a'])  # 输出5,直接从字典里取对应值

def test():
    b = 10
    # 函数内部的局部命名空间字典
    print(locals()['b'])  # 输出10

test()

当你访问一个名字(比如print(a)),Python会按顺序在对应的命名空间字典里查找这个名字的键,找到后返回对应的值(对象)——这就是名字绑定和查找的全过程。

常见的三种命名空间类型

  • 内置命名空间:Python自带的基础工具集合,比如print()、len()、int这些内置函数和类型。它是所有命名空间的基础,任何地方都能访问,查找优先级最低(最后被检查)。
  • 全局命名空间:对应整个Python脚本或模块,里面存放的是脚本顶层定义的变量、函数、类。从脚本运行开始存在,直到脚本结束才销毁。
  • 局部命名空间:比如函数内部、类的方法内部、循环块里的命名空间。它的生命周期很短,比如函数执行时创建,函数执行完毕就被销毁,里面的名字也就无法再访问了。

举个重名的例子,你可以在函数里定义和全局同名的变量,互不干扰:

x = "全局变量"

def func():
    x = "局部变量"
    print(x)  # 输出"局部变量",优先查局部命名空间

func()
print(x)  # 输出"全局变量",查全局命名空间

内容的提问来源于stack exchange,提问作者Gooty Nanditha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 20:55:23