网易首页 > 网易号 > 正文 申请入驻

【蓝因子教育】Python 命名空间 & 作用域

0
分享至

1 命名空间

1.1 概念

命名空间(namespace)是名称到对象的映射,当前大部分命名空间都是通过 Python 字典来实现的,它的主要作用是避免项目中的名字冲突,每一个命名空间都是相对独立的,在不同的命名空间中可以同名,在相同的命名空间中不可以同名。

1.2 种类

命名空间主要有以下三种:

  • 内置:主要用来存放内置函数、异常等,比如:abs 函数、BaseException 异常。
  • 全局:指在模块中定义的名称,比如:类、函数等。
  • 局部:指在函数中定义的名称,比如:函数的参数、在函数中定义的变量等。

1.3 生命周期

通常在不同时刻创建的命名空间拥有不同的生命周期,看一下三种命名空间的生命周期:

  • 内置:在 Python 解释器启动时创建,退出时销毁。
  • 全局:在模块定义被读入时创建,在 Python 解释器退出时销毁。
  • 局部:对于类,在 Python 解释器读到类定义时创建,类定义结束后销毁;对于函数,在函数被调用时创建,函数执行完成或出现未捕获的异常时销毁。

2 作用域

2.1 概念

作用域是 Python 程序可以直接访问命名空间的文本区域(代码区域),名称的非限定引用会尝试在命名空间中查找名称,作用域是静态的,命名空间是随着解释器的执行动态产生的,因此在作用域中访问命名空间中的名字具有了动态性,即作用域被静态确定,被动态使用。

2.2 种类

Python 有如下四种作用域:

  • 局部:最先被搜索的最内部作用域,包含局部名称。
  • 嵌套:根据嵌套层次由内向外搜索,包含非全局、非局部名称。
  • 全局:倒数第二个被搜索,包含当前模块的全局名称。
  • 内建:最后被搜索,包含内置名称的命名空间。

作用域的搜索顺序通过下图直观的来看一下:

Python 中会按上图所示作用域由内向外去搜索名字。

再通过具体代码来对作用域作进一步了解,如下所示:

# 全局作用域g = 1def outer(): # 嵌套作用域 e = 2 def inner(): # 局部作用域 i = 3

2.3 global & nonlocal

我们先来看一下全局变量与局部变量。

  • 全局变量:定义在函数外部的变量。
  • 局部变量:定义在函数内部的变量。

全局变量可以在整个程序范围内进行访问,而局部变量只能在函数内部访问。通过具体示例看一下:

# 全局变量d = 0def sub(a, b): # d 在这为局部变量 d = a - b print('函数内 : ', d)sub(9, 1)print('函数外 : ', d)

执行结果:

函数内 : 8函数外 : 0

当内部作用域想要修改外部作用域的变量时,就要用到和关键字了,下面通过具体示例来了解一下。

global

nonlocal

如果我们想将上面示例中函数中的变量修改为全局变量,则需使用关键字,示例如下所示:

sub()

global

# 全局变量d = 0def sub(a, b): # 使用 global 声明 d 为全局变量 global d d = a - b print('函数内 : ', d)sub(9, 1)print('函数外 : ', d)

执行结果:

函数内 : 8函数外 : 8

如果需要修改嵌套作用域中的变量,则需用到关键字。

nonlocal

2.3.1 不使用 nonlocal

我们先来看一下不使用关键字的执行情况,如下所示:

nonlocal

def outer(): d = 1 def inner(): d = 2 print('inner:', d) inner() print('outer:', d)outer()

执行结果:

inner: 2outer: 1

2.3.2 使用 nonlocal

再来看一下使用了关键字的执行情况,如下所示:

nonlocal

def outer(): d = 1 def inner(): nonlocal d d = 2 print('inner:', d) inner() print('outer:', d)outer()

执行结果:

inner: 2outer: 2

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
痛别!央视著名主持人逝世

痛别!央视著名主持人逝世

江南晚报
2025-02-14 10:00:58
宋祖德喊话具俊晔,无权插手孩子,闭上嘴,收拾行李,赶快回韩国

宋祖德喊话具俊晔,无权插手孩子,闭上嘴,收拾行李,赶快回韩国

宇哥说
2025-02-10 23:50:05
印度一记者曝光12亿贪腐案后惨死化粪池,头部15处骨折,整颗心脏被掏出

印度一记者曝光12亿贪腐案后惨死化粪池,头部15处骨折,整颗心脏被掏出

FM93浙江交通之声
2025-02-16 23:55:47
萧旭岑一行刚回去便得到消息,马英九将率团来访这些地方

萧旭岑一行刚回去便得到消息,马英九将率团来访这些地方

基斯默默
2025-02-17 01:05:51
北大党委书记调整

北大党委书记调整

新京报
2025-02-14 12:23:08
腾讯突然宣布:3月13日11时起,这项业务停止运营!很多人用过……

腾讯突然宣布:3月13日11时起,这项业务停止运营!很多人用过……

鲁中晨报
2025-02-16 15:55:03
《哪吒2》票房突破115亿!网友:到200亿票房和我有关系吗?

《哪吒2》票房突破115亿!网友:到200亿票房和我有关系吗?

小人物看尽人间百态
2025-02-16 13:03:35
一传糟糕,副攻差,主帅不给力!江苏女排输球,赵勇实力超施海荣

一传糟糕,副攻差,主帅不给力!江苏女排输球,赵勇实力超施海荣

金毛爱女排
2025-02-17 01:45:02
美团连夜绣红旗:东哥零元购掀桌,黄袍皇帝跪着喊"亲亲骑手别走"

美团连夜绣红旗:东哥零元购掀桌,黄袍皇帝跪着喊"亲亲骑手别走"

笑熬浆糊111
2025-02-17 00:05:23
网友建议北京规划一条五环外地铁线路,官方回应了

网友建议北京规划一条五环外地铁线路,官方回应了

看秋月春风
2025-02-16 18:17:10
职业扣将,麦克朗扣篮大赛赚31万美元,NBA生涯仅13.2万美元

职业扣将,麦克朗扣篮大赛赚31万美元,NBA生涯仅13.2万美元

懂球帝
2025-02-16 15:45:33
最新公布!广州今年旧改,计划投资超1000亿!

最新公布!广州今年旧改,计划投资超1000亿!

房地产导刊
2025-02-16 14:43:31
一张合照炸翻全网。马斯克端着咖啡杯笑意盈盈

一张合照炸翻全网。马斯克端着咖啡杯笑意盈盈

玲子日记
2025-02-12 11:05:50
春节票房仅1千万,古天乐好惨!新片放弃内地,感叹《哪吒2》太癫

春节票房仅1千万,古天乐好惨!新片放弃内地,感叹《哪吒2》太癫

头号电影院
2025-02-16 07:33:22
不打了!26岁陈雨菲宣布退赛 凡尘组合送祝福:为团队缘分干杯

不打了!26岁陈雨菲宣布退赛 凡尘组合送祝福:为团队缘分干杯

体坛记忆
2025-02-17 01:02:12
智驾收费,被扼杀在摇篮里

智驾收费,被扼杀在摇篮里

汽车公社
2025-02-14 19:59:55
为什么我感受不到 1500 元的手机比四五千的差?网友回答太真实了

为什么我感受不到 1500 元的手机比四五千的差?网友回答太真实了

只只鱼乐
2025-02-13 20:42:00
广东渔民捞出沉海15天铁笼,割开笼子后发现里面盘坐了个女人

广东渔民捞出沉海15天铁笼,割开笼子后发现里面盘坐了个女人

纪实录
2024-03-05 21:55:27
惊!美军印太司令坦言困境,风向突变引热议

惊!美军印太司令坦言困境,风向突变引热议

小小小白看世界
2025-02-17 01:23:20
66岁毕姥爷承认“老来得子”!二婚老婆年轻漂亮还是舞蹈编导教授

66岁毕姥爷承认“老来得子”!二婚老婆年轻漂亮还是舞蹈编导教授

读史
2025-02-15 07:50:03
2025-02-17 05:12:49
原画在线课堂vv
原画在线课堂vv
一家有温度的原画教育机构
1298文章数 1关注度
往期回顾 全部

科技要闻

官宣!百度搜索将接入DeepSeek

头条要闻

从英国剑桥大学毕业后 00后女孩在上海动物园当饲养员

头条要闻

从英国剑桥大学毕业后 00后女孩在上海动物园当饲养员

体育要闻

麦克朗三夺扣篮王:历史首人12扣8次满分

娱乐要闻

琼瑶去世两个月后,林婉珍也离开了

财经要闻

良品铺子遭遇上市以来最艰难时刻

汽车要闻

或全系搭华为乾崑智驾 岚图梦想家新款车型将上市

态度原创

游戏
家居
教育
房产
手机

三国群英传3:当年孟获麻雀虽小却五脏俱全,这六人足够横扫华夏

家居要闻

森活艺家 法式与极简融合

教育要闻

民办校门口排长队!南京家长挤破头。。。

房产要闻

热度爆表!广州的赢面,依旧很大!

手机要闻

坏消息:三星One UI 7.0更新延迟!好消息:三星One UI 8提前发布

无障碍浏览 进入关怀版