首页 > 解决方案 > 如何允许 exec 在 python 的嵌套方法中访问自由变量?

问题描述

exec我必须在 python(2.6) 的嵌套方法中访问自由变量

def outerF():
    la = 5
    def innerF():
        str1 = "print(la)"
        exec (str1) in globals(),locals()
    innerF()
outerF()

预期结果是 5 但我收到以下错误

NameError:名称'la'未定义

标签: pythonpython-2.x

解决方案


请尝试对您的变量使用非本地语句。像这样:

def outerF():
    la = 5
    def innerF():
        nonlocal la
        str1 = "print(la)"
        exec (str1) in globals(),locals()
    innerF()
outerF()

更多信息可以在这里找到:Python 全局、局部和非局部变量


推荐阅读