nonlocal(#抬抬小手学Python# Python 之作用域下的 global 和 nonlocal 关键字)

2026-07-27 20:45:01 0

nonlocal(#抬抬小手学Python# Python 之作用域下的 global 和 nonlocal 关键字)

大家好,如果您还对nonlocal不太了解,没有关系,今天就由本站为大家分享nonlocal的知识,包括#抬抬小手学Python# Python 之作用域下的 global 和 nonlocal 关键字的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

本文目录

#抬抬小手学Python# Python 之作用域下的 global 和 nonlocal 关键字

该部分内容涉及 Python 变量作用域相关知识,变量作用域指的是变量的有效作用范围,直接理解就是 Python 中的变量不是任意位置都可以访问的,有限制条件。

一般情况下变量的作用域变化范围是 块级、函数、类、模块、包等,级别是从小到达。Python 中是没有块级作用域的,所以我们在写代码的时候,下面的代码是正确的。

在 Python 中常见的块级作用域有 if 语句、for 语句、while 语句、with 上下文语句。

上文已经提及了作用域是 Python 程序可以直接访问一个变量的作用范围,Python 的作用域一共有 4 种,分别如下:

一个比较经典的案例如下:

在 Python 中变量寻找的顺序是从内到外,先局部,然后外部,在全局,在内建,这种规则叫做 LEGB 规则 。

增加以下学习的趣味性,你可以研究下述代码中变量是如何变化的。

定义在 函数内部 的变量拥有一个局部作用域,定义在 函数外部 的变量拥有全局作用域。

输出结果,函数内部是 123 ,函数外部依旧是 0 。

如果希望函数内部(内部作用域)可以修改外部作用域的变量,需要使用 global 关键字。

此时输出的就都是 123 了,还有一点需要注意,在函数内容如果希望修改全局变量的值, global 关键字一定要写在变量操作前。

该代码会出现语法错误:

全局变量还存在一个面试真题,经常出现,请问下述代码运行结果。

如果要修改嵌套作用域(Enclosing 作用域)中的变量,需要 nonlocal 关键字,测试代码如下:

输出结果自行测试,注意 nonlocal 关键字必须是 Python3.X+版本,Python 2.X 版本会出现语法错误:

在多重嵌套中, nonlocal 只会上溯一层,如果上一层没有,则会继续上溯,下述代码你可以分别注释查看结果。

局部变量和全局变量具体有哪些,可以通过 locals() 和 globals() 两个内置函数获取。

本篇博客为大家说明了 Python 的作用域,并且对 global 和 nonlocal 关键字进行了学习,希望对你有所帮助。

python函数不使用nonlocal关键字报错原因怎么写

global
python 函数嵌套和nonlocal关键字
只待风起
原创
关注
3点赞·7531人阅读
python函数可以嵌套使用,使用也比较简单,举个栗子:
def outer():
print("outer")
def inner():
print("inner")
inner()
outer()
## 运行结果:
outer
inner
复制
nonlocal关键字:
与global关键字有点相似,可以对比着理解。nonlocal关键字只能作用域局部变量,且始终找离当前最近的上层局部作用域中的变量。看栗子:
a = 1
def outer():
nonlocal a
a = 2
outer()
print(a)
复制
结果:报错  SyntaxError: no binding for nonlocal ’a’ found,
原因分析:nonlocal关键字是能作用域局部变量,当使用nonlocal声明变量 a 时,就会往上最近一层局部作用域寻找局部变量 a ,结果没找着,报错。
a = 1
def outer():
global a
a = 2
def inner():
nonlocal a
a = 3
inner()
print(a)
outer()
print(a)
复制
结果:报错  SyntaxError: no binding for nonlocal ’a’ found,
原因分析:当使用nonlocal声明变量 a 时,就会往上最近一层局部作用域寻找局部变量 a ,此时外层局部作用域虽然能找到变量a,但是这找到的 这个a 已经被global声明为全局变量了,所以报错。
a = 1
def outer():
a = 2
def inner():
nonlocal a
a = 3
def inner2():
print(a)
inner2()
print(a)
inner()
print(a)
outer()
print(a)
## 运行结果:
3
3
3
1

以上就是我们为大家找到的有关“nonlocal(#抬抬小手学Python# Python 之作用域下的 global 和 nonlocal 关键字)”的所有内容了,希望可以帮助到你。如果对我们网站的其他内容感兴趣请持续关注本站。

nonlocal(#抬抬小手学Python# Python 之作用域下的 global 和 nonlocal 关键字)

本文编辑:admin
: nonlocal

更多文章:


wireshark没有找到接口(我在windows xp上安装了wireshark软件,结果提示There are no interfaces on which a capture can be done)

wireshark没有找到接口(我在windows xp上安装了wireshark软件,结果提示There are no interfaces on which a capture can be done)

本篇文章给大家谈谈wireshark没有找到接口,以及我在windows xp上安装了wireshark软件,结果提示There are no interfaces on which a capture can be done对应的知识点,

2025年7月31日 03:30

结束正在运行的程序快捷键(电脑关闭程序快捷键 都有哪些呢)

结束正在运行的程序快捷键(电脑关闭程序快捷键 都有哪些呢)

“结束正在运行的程序快捷键”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看结束正在运行的程序快捷键(电脑关闭程序快捷键 都有哪些呢)!本文目录电脑关闭程序快捷键 都有哪些呢在电脑上结束任务的快捷键是什么(按哪个键结束程序)电

2025年7月3日 03:45

零基础学php培训(昌平IT培训分享学PHP想快点学会要怎么办)

零基础学php培训(昌平IT培训分享学PHP想快点学会要怎么办)

大家好,如果您还对零基础学php培训不太了解,没有关系,今天就由本站为大家分享零基础学php培训的知识,包括昌平IT培训分享学PHP想快点学会要怎么办的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录昌平IT培训分享

2025年12月27日 23:30

维吉尼亚密码怎么用(令n=26,s=4,密钥k=QEGD,明文串M=computer,用维吉尼亚密码体制对M加密)

维吉尼亚密码怎么用(令n=26,s=4,密钥k=QEGD,明文串M=computer,用维吉尼亚密码体制对M加密)

“维吉尼亚密码怎么用”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看维吉尼亚密码怎么用(令n=26,s=4,密钥k=QEGD,明文串M=computer,用维吉尼亚密码体制对M加密)!本文目录令n=26,s=4,密钥k=QE

2026年4月2日 23:45

化妆品入库表单模板(出库单和入库单怎么弄的表格)

化妆品入库表单模板(出库单和入库单怎么弄的表格)

本篇文章给大家谈谈化妆品入库表单模板,以及出库单和入库单怎么弄的表格对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录出库单和入库单怎么弄的表

2025年10月8日 14:30

下载php的软件(php开发软件有哪些(php用什么软件))

下载php的软件(php开发软件有哪些(php用什么软件))

这篇文章给大家聊聊关于下载php的软件,以及php开发软件有哪些(php用什么软件)对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录php开发软件有哪些(php用什么软件)php开发软件有哪些php项目开发用什么软件学php要

2025年9月22日 21:15

isnull()方法的作用(sqlserver中isnull(@RecIndex,’’) <> ’’是什么意思)

isnull()方法的作用(sqlserver中isnull(@RecIndex,’’) <> ’’是什么意思)

其实isnull()方法的作用的问题并不复杂,但是又很多的朋友都不太了解sqlserver中isnull(@RecIndex,’’) ’’是什么意思,因此呢,今天小编就来为大家分享isnull()方法的作用的一些知识,希望可以帮助到大家,

2026年7月2日 14:45

永久免费个人网站申请注册w(如何注册免费网站)

永久免费个人网站申请注册w(如何注册免费网站)

本篇文章给大家谈谈永久免费个人网站申请注册w,以及如何注册免费网站对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录如何注册免费网站个人网站有

2025年11月22日 18:00

constructed environment翻译(翻译下面这段文字)

constructed environment翻译(翻译下面这段文字)

各位老铁们,大家好,今天由我来为大家分享constructed environment翻译,以及翻译下面这段文字的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始

2025年9月26日 03:00

interface如何读(请教几个英文怎么读)

interface如何读(请教几个英文怎么读)

其实interface如何读的问题并不复杂,但是又很多的朋友都不太了解请教几个英文怎么读,因此呢,今天小编就来为大家分享interface如何读的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录请教几个英文怎么读r

2025年12月2日 14:30

广州中小企业网站制作(怎么做中小企业网站呢)

广州中小企业网站制作(怎么做中小企业网站呢)

其实广州中小企业网站制作的问题并不复杂,但是又很多的朋友都不太了解怎么做中小企业网站呢,因此呢,今天小编就来为大家分享广州中小企业网站制作的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录怎么做中小企业网站呢我想建

2026年6月10日 16:15

spite词组(in spite of中spite是恶意,为什么变成短语是尽管的意思)

spite词组(in spite of中spite是恶意,为什么变成短语是尽管的意思)

各位老铁们好,相信很多人对spite词组都不是特别的了解,因此呢,今天就来为大家分享下关于spite词组以及in spite of中spite是恶意,为什么变成短语是尽管的意思的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看

2025年9月18日 03:45

mvc模式和责任链(网站开发模式除了MVC外还有什么)

mvc模式和责任链(网站开发模式除了MVC外还有什么)

这篇文章给大家聊聊关于mvc模式和责任链,以及网站开发模式除了MVC外还有什么对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录网站开发模式除了MVC外还有什么软件设计模式主要有哪几种mvc开发模式java 除了mvc设计模式

2025年9月13日 21:00

quadrature(quadrature中文翻译)

quadrature(quadrature中文翻译)

大家好,今天小编来为大家解答以下的问题,关于quadrature,quadrature中文翻译这个很多人还不知道,现在让我们一起来看看吧!本文目录quadrature中文翻译quadrature rule的定义 请问什么是quadratur

2025年11月21日 16:00

datagridview动态添加列(在DataGridView中动态添加combox列)

datagridview动态添加列(在DataGridView中动态添加combox列)

各位老铁们,大家好,今天由我来为大家分享datagridview动态添加列,以及在DataGridView中动态添加combox列的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家

2026年7月18日 09:00

web服务器控件不包括(web用户控件 的优点和缺点在哪里)

web服务器控件不包括(web用户控件 的优点和缺点在哪里)

大家好,如果您还对web服务器控件不包括不太了解,没有关系,今天就由本站为大家分享web服务器控件不包括的知识,包括web用户控件 的优点和缺点在哪里的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录web用户控件

2026年4月12日 16:45

字符串strtok(c语言:如何把字符串分解为一个个的字符)

字符串strtok(c语言:如何把字符串分解为一个个的字符)

其实字符串strtok的问题并不复杂,但是又很多的朋友都不太了解c语言:如何把字符串分解为一个个的字符,因此呢,今天小编就来为大家分享字符串strtok的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录c语言:如何

2025年8月24日 22:45

国内军事新闻(中国最新军事新闻)

国内军事新闻(中国最新军事新闻)

大家好,如果您还对国内军事新闻不太了解,没有关系,今天就由本站为大家分享国内军事新闻的知识,包括中国最新军事新闻的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录中国最新军事新闻关于战争的国内新闻深圳卫视军情直播间播

2025年10月18日 16:30

forks翻译(刀叉的英文怎么说)

forks翻译(刀叉的英文怎么说)

其实forks翻译的问题并不复杂,但是又很多的朋友都不太了解刀叉的英文怎么说,因此呢,今天小编就来为大家分享forks翻译的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录刀叉的英文怎么说亲人怎么翻译英语高手请进,

2026年6月2日 19:15

echo和printf的区别(bash下echo和print的区别在哪里)

echo和printf的区别(bash下echo和print的区别在哪里)

今天给各位分享bash下echo和print的区别在哪里的知识,其中也会对bash下echo和print的区别在哪里进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录bash下echo和print的区别在哪里PH

2026年9月22日 22:45

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索