#python引用变量的顺序: 当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量
##counter
##内层函数能访问外层函数的变量,但不能修改它的指向
def createCounter(): count = [0] def counter(): count[0] += 1 return count[0] return counter
##这种情况可行是因为count指向的是一个列表的实例对象,实质上,列表的实例对象的地址一直没变,只是其内容的指向改变了而已
###而nonlocal关键字用来在函数或其他作用域中修改外层(非全局)变量
nonlocal
def createCounter(): count = 0 def counter(): nonlocal count count += 1 return count return counter
###global关键字则是用于修改全局变量
global
谢谢讲解,我正想知道为啥呢
感谢解惑!!!
受教了!
讲的很好。关键就在于内层函数可以访问外层的值,但不能修改其指向。 需要访问并修改外层变量需要视情况使用global或nonlocal。
为什么没有点赞的功能,?赞
Sign in to make a reply
初见-好久不见
#python引用变量的顺序: 当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量
##counter
##内层函数能访问外层函数的变量,但不能修改它的指向
##这种情况可行是因为count指向的是一个列表的实例对象,实质上,列表的实例对象的地址一直没变,只是其内容的指向改变了而已
###而
nonlocal
关键字用来在函数或其他作用域中修改外层(非全局)变量###
global
关键字则是用于修改全局变量