Python 3 的'nonlocal”关键字与嵌套函数作用域中的'global”有何不同?
Python 3 的“nonlocal”关键字:深入探究
“nonlocal”关键字在 Python 3 中具有重要用途,提供对在封闭范围内声明的变量,而不使用保留的全局关键字。这种细致入微的功能允许对嵌套函数内的变量引用进行特殊控制。
揭示非局部的角色
考虑以下不带“nonlocal”关键字的代码片段:
x = 0 def outer(): x = 1 def inner(): x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
执行时,此代码会产生以下结果输出:
inner: 2 outer: 1 global: 0
正如您所观察到的,内部函数中的变量“x”独立于外部函数中的变量“x”。这是因为内部函数的“x”变量在其自己的作用域内优先。
相反,引入“nonlocal”关键字会改变行为:
x = 0 def outer(): x = 1 def inner(): nonlocal x x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
通过此修改,输出更改为:
inner: 2 outer: 2 global: 0
“nonlocal”关键字允许内部函数引用和修改在外部声明的“x”变量
非局部与全局
必须注意“非局部”和“全局”之间的区别。虽然这两个关键字都允许从嵌套范围访问变量,但它们有不同的用途。 “nonlocal”限制对仅在封闭范围中定义的变量的访问,而“global”提供对全局范围中定义的变量的访问。
为了更好地理解,请考虑使用“global”关键字的以下代码:
x = 0 def outer(): x = 1 def inner(): global x x = 2 print("inner:", x) inner() print("outer:", x) outer() print("global:", x)
在这种情况下,输出变为:
inner: 2 outer: 1 global: 2
“global”关键字将“x”全局绑定到 true声明的变量,覆盖任何具有相同名称的局部或封闭变量。
结论
Python 3 中的“nonlocal”关键字提供了一个强大的工具来管理变量引用嵌套函数。它使在封闭范围内声明的变量可以在内部范围内访问和修改,从而对复杂代码结构中的变量使用提供更精细的控制。
以上是Python 3 的'nonlocal”关键字与嵌套函数作用域中的'global”有何不同?的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

使用FiddlerEverywhere进行中间人读取时如何避免被检测到当你使用FiddlerEverywhere...

如何在10小时内教计算机小白编程基础?如果你只有10个小时来教计算机小白一些编程知识,你会选择教些什么�...

攻克Investing.com的反爬虫策略许多人尝试爬取Investing.com(https://cn.investing.com/news/latest-news)的新闻数据时,常常�...

Python3.6环境下加载pickle文件报错:ModuleNotFoundError:Nomodulenamed...

使用Scapy爬虫时管道文件无法写入的原因探讨在学习和使用Scapy爬虫进行数据持久化存储时,可能会遇到管道文�...
