《Python语言程序设计》 —3.4.4 nonlocal关键字
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。
- 点赞
- 收藏
- 关注作者
评论(0)