Discuss / Python / python引用变量的顺序

python引用变量的顺序

Topic source

#python引用变量的顺序: 当前作用域局部变量->外层作用域变量->当前模块中的全局变量->python内置变量

##counter

##内层函数能访问外层函数的变量,但不能修改它的指向

def createCounter():
    count = [0]
    def counter():
        count[0] += 1
        return count[0]
    return counter

##这种情况可行是因为count指向的是一个列表的实例对象,实质上,列表的实例对象的地址一直没变,只是其内容的指向改变了而已

###而nonlocal关键字用来在函数或其他作用域中修改外层(非全局)变量

def createCounter():
    count = 0
    def counter():
        nonlocal count 
        count += 1
        return count
    return counter

###global关键字则是用于修改全局变量

谢谢讲解,我正想知道为啥呢

子鱼若鱼

#3 Created at ... [Delete] [Delete and Lock User]

感谢解惑!!!

zL丶_44830

#4 Created at ... [Delete] [Delete and Lock User]

受教了!

讲的很好。关键就在于内层函数可以访问外层的值,但不能修改其指向。 需要访问并修改外层变量需要视情况使用globalnonlocal

Gssdragon

#6 Created at ... [Delete] [Delete and Lock User]

为什么没有点赞的功能,?赞


  • 1

Reply