如果内部函数已经具有相同名称的变量,则如何从内部函数访问封闭函数中的非局部变量

娜塔莎·詹森(NatashaJnsn)

我需要找到x = "Nonlocal"引用变量的方法inner_function_nonlocal()可能是我参考x = "Global":的方式globals()['x'],但是请您帮忙!

请注意:我不能发表评论或删除x = "Local"nonlocal x代替它。

x = "Global"


def enclosing_funcion():
    x = "Nonlocal"

    def inner_function_global():
        x = "Local"
        print(globals()['x'])   # Call the global a

    def inner_function_nonlocal():
        x = "Local"        # <- This line can NOT be commented!!!
        print(_?_?_?_?_)   # <- What should I specify here in order to print x which is nonlocal?

    inner_function_global()
    inner_function_nonlocal()


if __name__ == '__main__':
    enclosing_funcion()

输出应为:

Global (this is already achieved)
Nonlocal (need help to get this one)
史蒂夫

您可以添加一个方法来获取Nonlocal值:

x = "Global"

def enclosing_funcion():
    x = "Nonlocal"

    def non_local():
        return x

    def inner_function_global():
        x = "Local"
        print(globals()['x'])   # Call the global a

    def inner_function_nonlocal():
        x = "Local"        # <- This line can NOT be commented!!!
        print(non_local())   # <- What should I specify here in order to print x which is nonlocal?

    inner_function_global()
    inner_function_nonlocal()


if __name__ == '__main__':
    enclosing_funcion()

结果:

Global
Nonlocal

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从部分内部而不是使用具有相同名称的局部变量访问:locals哈希?

声明具有相同名称的局部变量时,函数变得不确定

C#中存在具有相同名称的局部变量时,如何在函数中更改全局变量的值

如何访问局部变量(函数内部的变量)和头文件中的变量的ICElement?

如何在C中访问具有相同名称的局部变量和全局变量

如何使局部变量(在函数内部)成为全局变量

如何使局部变量(在函数内部)成为全局变量

pdfmake 页码和从页脚函数内部访问局部变量

VimL / Vimscript:如何从内部函数访问外部函数的局部变量?

嵌套函数中具有相同名称的变量

如何在具有相同名称的变量的静态函数中访问全局静态变量

如何在主函数内部创建局部变量?

函数内部局部变量的生存期如何延长?

当函数具有同义局部变量时,如何在函数中获取全局变量?

多次调用后在内部函数中更改非局部变量的结果

在函数中已经存在的宏中声明具有相同名称的变量时,为什么没有收到警告?

从函数内部的函数更改局部变量的值

当已经存在相同名称的全局变量和局部变量时,如何访问变量(C ++)?

JavaScript函数内部的局部变量和全局变量

具有相同名称的变量和函数破坏

如何从函数内部访问变量

如何访问函数内部的变量

update()具有局部协变量的函数内部的模型

如何在C ++中的lambda函数中传递相同名称的局部变量和参数(使用此关键字)?

如何将值从locals()分配给具有相同名称的局部变量?

在Ruby中具有相同名称的局部变量和方法?

访问函数内部的变量

函数内部局部变量的生命周期(内存范围)

当日志后声明的内部函数具有相同的变量名称时,为什么内部函数中的变量返回nan