python中函数的多层嵌套与nonlocal
步骤/目录:
无本文首发于个人博客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,但都出现了错误。
问题:如果出现了多层函数嵌套,在内层函数中应该如何指定使用哪一个作用域中的变量?