《Python语言程序设计》 —3.4.4 nonlocal关键字

举报
华章计算机 发表于 2019/11/18 21:09:55 2019/11/18
【摘要】 本节书摘来自华章计算机《Python语言程序设计》一书中第3章,第3.4.4节,作者是王恺 王志 李涛 朱洪文。

3.4.4 nonlocal关键字

在Python中,函数的定义可以嵌套,即在一个函数的函数体中可以包含另一个函数的定义。通过nonlocal关键字,可以使内层的函数直接使用外层函数中定义的变量。下面通过不使用和使用nonlocal关键字的两个例子来说明nonlocal关键字的作用,参见代码清单3-25和代码清单3-26。

代码清单3-25 不使用nonlocal关键字示例

1    def outer(): #定义函数outer

2        x=10 #定义局部变量x并赋为10

3        def inner(): #在outer函数中定义嵌套函数inner

4            x=20 #将x赋为20

5            print('inner函数中的x值为',x)

6        inner() #在outer函数中调用inner函数

7        print('outer函数中的x值为',x)

8    outer() #调用outer函数

程序执行结束后,将在屏幕上输出如下结果:

inner函数中的x值为 20

outer函数中的x值为 10

从结果中可以看到,在inner函数中通过第4行的x=20定义了一个新的局部变量x并将其赋为20,而不是将outer函数中定义的局部变量x修改为20。

下面对代码清单3-25稍作修改:

代码清单3-26 使用nonlocal关键字示例

1    def outer(): #定义函数outer

2        x=10 #定义局部变量x并赋为10

3        def inner(): #在outer函数中定义嵌套函数inner

4            nonlocal x #nonlocal声明

5            x=20 #将x赋为20

6            print('inner函数中的x值为',x)

7        inner() #在outer函数中调用inner函数

8        print('outer函数中的x值为',x)

9    outer() #调用outer函数

程序执行结束后,将在屏幕上输出如下结果:

inner函数中的x值为 20

outer函数中的x值为 20

与代码清单3-25相比,代码清单3-26只是增加了第4行代码,通过nonlocal x声明在inner函数中使用outer函数中定义的变量x,而不是重新定义一个局部变量x。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。