Python非本地语句

问题:

Python nonlocal语句在Python 3.0及更高版本中做了什么?
官方Python网站上没有文档,help("nonlocal")也不起作用。

回答:

比较这个,不使用nonlocal

x = 0
def outer():
    x = 1
    def inner():
        x = 2
        print("inner:", x)

    inner()
    print("outer:", x)

outer()
print("global:", x)

# inner: 2
# outer: 1
# global: 0

对此,使用,其中inner()x现在也是outer()x

x = 0
def outer():
    x = 1
    def inner():
        nonlocal x
        x = 2
        print("inner:", x)

    inner()
    print("outer:", x)

outer()
print("global:", x)

# inner: 2
# outer: 2
# global: 0

如果我们使用,它会将x绑定到正确的“全局”值:

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Python nonlocal statement

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

28 − 25 =