Python全局与局部变量详解:作用域、变量查找与管理
53 浏览量
更新于2024-08-28
收藏 255KB PDF 举报
Python编程语言中,全局变量和局部变量是理解函数和作用域的关键概念。全局变量是在函数外部定义的,可以在整个程序的任何地方访问。比如在给定的例子中,`a = 10` 是一个全局变量,它在程序的任何位置都能被调用,如在 `func` 或 `inner` 函数中。
局部变量则只在其被定义的函数内部有效。例如,`b = 20` 在 `func` 函数内定义,因此它仅在 `func` 内部可用。同样,`c = 30` 在 `inner` 函数内部定义,属于 `inner` 的局部变量,无法在 `func` 或者程序的其他部分直接访问。
在 Python 中,变量的作用域遵循 LEGB 规则,即:
1. **L** 局部(Local):函数内部定义的变量。
2. **E** 嵌套(Enclosing):嵌套函数(闭包)中的非局部变量。
3. **G** 全局(Global):在函数外部定义的变量。
4. **B** 内置(Built-in):Python 内置的函数名和常量。
当我们试图在函数内部访问全局变量时,如果没有使用 `global` 关键字,Python 会默认在局部作用域中查找变量。例如,如果在 `func` 中尝试访问并修改全局变量 `a`,不使用 `global` 的话,Python 会创建一个新的局部变量 `a`,而不是修改全局的 `a`。使用 `global a` 后,我们可以在函数内部修改全局变量 `a` 的值,如例子所示,`a` 的值变为了 15。
另一方面,`nonlocal` 关键字用于在嵌套函数中引用并修改外层函数的局部变量。在 `inner` 函数中,如果想修改 `func` 中的 `b`,需要使用 `nonlocal b` 来声明 `b` 是 `func` 的非局部变量,这样 `inner` 就可以访问并修改它。
名称空间是存储变量的容器,分为全局命名空间、局部命名空间和内置命名空间。全局命名空间记录模块级别的变量,局部命名空间记录函数内部的变量,而内置命名空间包含了 Python 自带的函数和常量,如 `print`、`len` 等。
在编写 Python 代码时,理解全局变量、局部变量以及它们的作用域规则至关重要,这有助于避免因变量作用域不当导致的错误,并确保代码的清晰性和可维护性。正确使用 `global` 和 `nonlocal` 关键字可以帮助你有效地管理不同作用域内的变量,特别是在处理函数嵌套或需要跨作用域操作变量时。
2022-05-05 上传
112 浏览量
2021-01-02 上传
点击了解资源详情
点击了解资源详情
2019-06-20 上传
2021-03-18 上传
点击了解资源详情
点击了解资源详情
weixin_38608693
- 粉丝: 2
- 资源: 907
最新资源
- dc-portfolio-site
- liteBox-开源
- c10lp_refkit_zephyr:在C10LP RefKit FPGA板上的litex vexriscv内核上运行的演示Zephyr应用程序
- Tasky
- UpGuard Cyber Security Ratings-crx插件
- 算法:基本算法和数据结构实现
- JQuerygantt,jquery甘特图
- 参考资料-基于RS485和单片机的排队机控制系统设计.zip
- JRDropMenu:JRDropMenu可快速实现下拉菜单功能
- 源代码深度学习入门:基于Python的理论与实现
- HUPROG:一个包含HUPROG'17(Hacettepe大学编程竞赛)的问题和该问题的解决方案的回购
- Spotify-Data:扩展下载Spotify数据时提供的基本流历史记录数据
- 编码方式
- simple.rar_按钮控件_Borland_C++_
- lua-table:具有超能力的lua表
- bitwarden-menubar:macOS菜单栏中的Bitwarden