page contents

内层函数修改局部变量就用它 | nonlocal

函数嵌套中修改外层函数的局部变量,用nonlocal就对了!

 nonlocal是python3x新加的功能,与global用法差不多,就是在局部作用域,如果想对父级作用域的变量进行改变时,需要用到nonlocal,当然这个用的不是很多,了解即可。

 
 nonlocal只能在封装函数中使用,在外部函数先进行定义,在内部函数进行nonlocal声明
 
 # *注意*:nonlocal 专门用于修改局部变量时使用
 
 # nonlocal关键字只能用于嵌套函数中
 nonlocal声明的变量只对局部起作用,离开封装函数,那么该变量就无效。
 a = 10
 def funa():
     a = 1
     def funb():
         nonlocal a   # a为外层的局部变量,对其进行修改,需要申请为外层函数的局部变量
         print('funb函数中a的值:', a)  # 引用局部变量
         a = 2     # 把a = 2写在print('funb函数中a的值:', a)前,则不报错
     funb()
     print('funa函数中a的值:', a)
 
 funa()
 print(a)
 运行结果:
 funb函数中a的值: 1
 funa函数中a的值: 2
 10
     
 # 只引用不修改可不声明    
 def outer():
     a = 3
     def inner():
         print(a)
     inner()
 outer()    # 3

  • 发表于 2021-06-18 16:51
  • 阅读 ( 574 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Wilia
Wilia

5 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1324 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章