步骤/目录:
无

本文首发于个人博客https://lisper517.top/index.php/archives/4241/,转载请注明出处。
本文的原文写作日期为2020年9月6日。
本文的目的如标题所示。

阅读《python基础教程第三版》第六章提到了函数及其作用域的嵌套。nonlocal为内部函数指定外部函数中的变量时使用。如果函数是三层嵌套会如何呢?我写了如下代码用于验证:

def out():
    x = 100

    def middle():
        x = 10

        def mini():
            nonlocal x
            print(x)

        return mini

    return middle


out()()()

结果输出了10。可见nonlocal有就近的原则。
为了在mini中能够调用out中的x,我试着在mini中使用out.x或者声明global x,但都出现了错误。

问题:如果出现了多层函数嵌套,在内层函数中应该如何指定使用哪一个作用域中的变量?

标签: none

添加新评论