Python----global和nolocal关键字的用法(python global nonlocal)

网友投稿 354 2022-08-23


Python----global和nolocal关键字的用法(python global nonlocal)

1、global的作用

这个问题在面试中非常常见,经常会有面试官问,如下代码打印结果是啥

var=10def func(): var=var+20 print("inner:",var)print(var)func()print(var)

var=10def func(): global var var=var+20 print("inner:",var)print(var)func()print(var)

执行结果如下:

10inner: 3030

这里需要记住的一个关键点是,全局变量在函数局部区域内,不能出现在赋值符号=的右侧,但是如果没有赋值符号,比如直接打印,这时又是可见的,如下:

var=10def func(): print("inner:",var)print(var)func()print(var)

执行结果为:

10inner: 1010

如果在函数局部区域内对和全局变量同名的变量重新赋值时,注意此时赋值的并不是全局变量,而是一个全新的局部变量,而全局变量并未发生变化,如下:

var=10def func(): var=20 print("inner:",var)print(var)func()print(var)

此时执行结果为:

10inner: 2010

2、nonlocal的作用

def outer(): var=10 def inner(): global var var=var+20 print("in inner:",var) print(var) inner() print(var)outer()

def outer(): var=10 def inner(): nonlocal var var=var+20 print("in inner:",var) print(var) inner() print(var)outer()

执行结果如下:

10in inner: 3030


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python----多继承和MRO继承机制
下一篇:Java生成日期时间存入Mysql数据库的实现方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~