Python基础 - 命名空间

目录

什么是命名空间

命名空间的分类

命名空间查找顺序

嵌套函数中命名空间查找顺序

命名空间的访问方式


什么是命名空间

一个命名空间是一个容器,容器内的元素是能映射到对象的名称

命名空间是一个 字典(dictionary)

多个命名空间相互独立,允许不同命名空间有相同的名称

命名空间的分类

1.每个函数都有着自已的命名空间,叫做局部命名空间,它记录了函数的变量,包括函数的参数和局部定义的变量

2.每个模块拥有它自已的命名空间,叫做全局命名空间,它记录了模块的变量,包括函数、类、其它导入的模块、模块级的变量和常量。

3.还有就是内置命名空间,任何模块均可访问它,它存放着内置的函数和异常

命名空间查找顺序

1.首先查找【局部命名空间】:特指当前函数或类的方法

2.再查找【全局命名空间】:特指当前的模块

3.最后查找【内置命名空间】:对每个模块都是全局的

4.如果 Python 在这些名字空间找不到 x,它将放弃查找并引发一个 NameError 异常,如,NameError: name 'aa' is not defined

嵌套函数中命名空间查找顺序

1.先在当前 (嵌套的或 lambda) 函数的命名空间中搜索

2.然后是在父函数的命名空间中搜索

3.接着是模块命名空间中搜索

4.最后在内置命名空间中搜索

命名空间的访问方式

本地符号表存储所有本地范围的相关信息,通过locals()方法来访问,locals() 函数会以字典类型返回当前位置的全部局部变量

全局符号表存储程序全局范围的所有信息,使用globals()方法来访问,globals()函数返回全局 (模块级别)命名空间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值