news 2026/6/21 15:19:31

【Python入门速学】3.3. 命名空间(namespace)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Python入门速学】3.3. 命名空间(namespace)

3.3.1. 什么是命名空间?

命名空间是程序中变量名的集合,它们仅在特定的代码区域内存在,而不会影响整个程序。

变量的作用域(scope)指的是变量在程序中可访问的范围。如果变量在某个位置不存在,则它超出了作用域

你可以把命名空间想象成程序中的“空间”,其中存放着变量名。

3.3.2. 命名空间的作用

不同的命名空间可以包含相同的变量名,但在不同的上下文中,它们的值可以不同。例如:

  • 全局命名空间:存储程序顶层的变量。
  • 局部命名空间:存储函数内部的变量。

3.3.3. 全局命名空间(Global Namespace)

全局命名空间存储所有的全局变量,即在整个程序范围内可用的变量。

示例:

# 全局命名空间global_var=10other_var=20

此时,global_varother_var都存储在全局命名空间中。

3.3.4. 局部命名空间(Local Namespace)

函数内部的变量属于局部命名空间,它们仅在函数执行期间存在。

defmy_function(x):y=x+1# 局部变量returny

my_function(4)调用时:

  • x = 4
  • y = x + 1 = 5

y仅在my_function内部有效。

3.3.5. 作用域的查找顺序(LEGB 规则)

当 Python 查找变量时,它会按以下顺序查找:

  1. 局部作用域(Local):当前函数内部的变量。
  2. 封闭作用域(Enclosing):外层函数的变量(适用于嵌套函数)。
  3. 全局作用域(Global):模块级变量。
  4. 内建作用域(Built-in):Python 内置变量,如print

示例:

global_var=10# 全局变量defmy_function():local_var=5# 局部变量print(global_var+local_var)
  • local_var仅在my_function内部有效。
  • global_var在整个程序中可用。

3.3.6. 变量的查找过程

如果一个变量在当前作用域不存在,Python 会向上查找,直到找到该变量。

global_var=10defmy_function():y=global_var+1# 查找 global_varprint(y)my_function()# 输出 11

Python 发现global_var不在函数内,于是向上查找,找到了全局变量global_var

3.3.7. 局部变量不会影响全局变量

如果在函数内部定义了与全局变量同名的变量,它们是不同的变量

global_var=10defmy_function():global_var=5# 这是局部变量,不影响全局变量print("Inside function:",global_var)my_function()print("Outside function:",global_var)

输出:

Inside function: 5 Outside function: 10

3.3.8. 修改全局变量(global 关键字)

如果你想在函数内部修改全局变量,需要使用global关键字。

global_var=10defmy_function():globalglobal_var# 允许修改全局变量global_var=5my_function()print(global_var)# 输出 5

3.3.9. 嵌套作用域(nonlocal 关键字)

在嵌套函数中,如果想修改外部函数的变量,可以使用nonlocal关键字。

defouter():x=10# 外部函数变量definner():nonlocalx# 修改外部函数变量x+=5print("Inside inner:",x)inner()print("Inside outer:",x)outer()

输出:

Inside inner: 15 Inside outer: 15

3.3.10 总结

  1. 命名空间存储变量名,它们有不同的作用域。
  2. 全局命名空间包含所有全局变量,局部命名空间包含函数内部的变量。
  3. Python 按 LEGB 规则查找变量,先查找局部变量,再逐级向上查找。
  4. 局部变量不会影响全局变量,除非使用global关键字。
  5. 嵌套函数可使用nonlocal关键字修改外部函数的变量。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/21 15:13:09

NearDrop:在macOS上实现Android文件快速传输的完整指南

NearDrop:在macOS上实现Android文件快速传输的完整指南 【免费下载链接】NearDrop An unofficial Google Nearby Share/Quick Share app for macOS 项目地址: https://gitcode.com/gh_mirrors/ne/NearDrop 想要在Mac和Android设备之间实现快速、便捷的文件传…

作者头像 李华
网站建设 2026/4/13 21:33:15

1 4.1 微软商店的使用(Microsoft Store:下载/安装/管理应用与游戏)

🔥个人主页:杨利杰YJlio❄️个人专栏:《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》 《Python》 《Kali Linux》 《那些年未解决的Windows疑难杂症》🌟 让复杂的事情更…

作者头像 李华
网站建设 2026/4/13 21:33:11

Comsol锂电池仿真进阶:搞定电极平衡与参数辨识,让模型更贴近真实电池

Comsol锂电池仿真进阶:从电极平衡到参数校准的实战指南 当你的锂电池仿真模型与实验数据总是存在微妙的偏差——起始电压差了0.2V,充放电曲线斜率不一致,循环寿命预测偏离实际值——这可能不是算法问题,而是电极平衡与参数辨识的精…

作者头像 李华
网站建设 2026/4/13 21:32:13

软件评测师基础知识专项刷题:知识产权(二)

前言软考软件评测师备考之路,基础刷题必不可少。本文围绕【知识产权】模块整理经典习题 核心考点梳理,系列内容长期连载更新,慢慢积累、逐个突破,轻松夯实应试功底。考点保护期限注册商标有效期为10年发明专利权保护期为20年&…

作者头像 李华
网站建设 2026/4/13 21:28:51

FreakStudio仍

环境安装 pip install keystone-engine capstone unicorn 这3个工具用法极其简单,下面通过示例来演示其用法。 Keystone 示例 from keystone import * CODE b"INC ECX; ADD EDX, ECX" try:ks Ks(KS_ARCH_X86, KS_MODE_64)encoding, count ks.asm(CODE)…

作者头像 李华