在 Python 中,有没有办法在内部函数体中使用来自外部函数的变量?

Is there a way to use variable from outer function in the inner function body, in Python?

我尝试构建的代码模式是:

def OuterFunction():
    theVariable = 0

    def InnerFunction():
        # use theVariable from OuterFunction somehow

    # the solution is not to use InnerFunction(theVariable) due to the reasons given in the text
    InnerFunction()

我希望有一些关键字(如 global)或告诉解释器使用外部方法范围内的变量的方法。

为什么我需要这样: 我们之前 运行 的一个 Python 脚本现在必须成为模块(方法的集合)。

OuterFunction 之前并不存在,而 InnerFunction 只是大量非常复杂的方法的一个例子,这些方法具有已经存在的逻辑。

theVariable 只是在 InnerFunction 表示的所有方法的脚本中使用的多个全局变量的示例。

我不想更改所有嵌套方法的签名。

编辑:

这是我在每个解释器中崩溃的代码,出现 "local variable 'theVariable' referenced before assignment" 错误(所以我不能只引用变量):

def OuterFunction():

    theVariable = 5

    def InnerFunction():
        theVariable = theVariable + 1
        print(theVariable)

    InnerFunction()

OuterFunction()

编辑2:

似乎试图更改变量导致异常,这给出了错误的描述。 如果将 InnerFunction() 更改为仅包含 print(theVariable) 语句,它会起作用。

你觉得这样可以吗:

def OuterFunction():
    theVariable = 0
    def InnerFunction(value):
        return value + 1
    theVariable = InnerFunction(theVariable)
    return theVariable

这样您就不必弄乱作用域并且您的函数是

直接引用变量即可,如下;

def outer():
    x = 1
    def inner():
        print(x + 2)
    inner()
outer()

打印:3

如果您不想将它的值作为参数传递,您可以简单地在嵌套的 InnerFunction 中引用 'theVariable':

def OuterFunction():
    # Declare the variable
    theVariable = 42

    def InnerFunction():
        # Just reference the 'theVariable', using it, manipulating it, etc...
        print(theVariable)

    # Call the InnerFunction inside the OuterFunction
    InnerFunction()

# Call the OuterFunction on Main
OuterFunction()

# It will print '42' as result