Python 的命名空间

在 Python 中,所有的名字都存在于一个空间中,它们在该空间中存在和被操作——这就是命名空 间。它就好像一个盒子,每一个变量名字都对应装着一个对象。当查询变量的时候,会从该盒子里面寻 找相应的对象。

python 使用命名空间记录变量。 python 中的命名空间就像是一个 dict key 是变量的名字, value 是变量的值。
 
在一个 Python 程序中的任何一个地方,都存在几个可用的命名空间。
1.python中,每个函数都有一个自己的命名空间,叫做 local namespace,它记录了函数的变量。
2.python中,每个 module有一个自己的命名空间,叫做 global namespace,它记录了 module的变量,包括  functions, classes 和其它 imported modules,还有  module级别的 变量和常量。
3.还有 build-in 命名空间,可以被任意模块访问,这个 build-in命名空间中包含了 build-in function 和  exceptions
 
命名空间查找顺序:
python 中的某段代码要访问一个变量 x 时, python 会在所有的命名空间中寻找这个变量,查找的顺序为:
 1>local namespace - 指的是当前函数或者当前类方法。如果在当前函数中找到了变量,停止搜索.
 
2>global namespace - 指的是当前的模块。如果在当前模块中找到了变量,停止搜索
 
3>build-in namespace - 如果在之前两个 namespace中都找不到变量 xpython会假设 xbuild-in的函数或者变量。如果 x不是内置函数或者变量, python会报错 NameError
 
 
嵌套函数的情况:
     1、先在当前 (嵌套的或 lambda) 函数的命名空间中搜索
     2、然后是在父函数的命名空间中搜索
     3、接着是模块命名空间中搜索
     4、最后在内置命名空间中搜索
!!!不同命名空间中命名没有任何联系!!!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值