在 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
我尝试构建的代码模式是:
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