python语言关键字是_《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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值