Python 内部函数访问外部函数';s变量
让我们假设有以下简单的代码:Python 内部函数访问外部函数';s变量,python,Python,让我们假设有以下简单的代码: def my_outer_function(): outer_var = 123 def my_inner_function(): return outer_var + 1 return my_inner_function get_inner = my_outer_function() get_inner() 我想知道没有任何运行时错误外部变量-外部函数的变量-仅当该函数运行时才
def my_outer_function():
outer_var = 123
def my_inner_function():
return outer_var + 1
return my_inner_function
get_inner = my_outer_function()
get_inner()
我想知道没有任何运行时错误<代码>外部变量-外部函数的变量-仅当该函数运行时才可用,即当我的外部函数
结束时它消失。但是当我调用get_inner()
时,my_outer_function()
已经结束,所以我打赌会出现运行时错误,因为my_inner_function
找不到outer_var
你怎么解释这一切
只有当函数运行时,外部函数的变量才可用,即当my_outer_函数结束时,该变量消失
这并不完全正确。该变量在my\u outer\u函数的作用域中可用<代码>我的内部函数
有自己声明的范围和父函数的范围
my_inner_函数
引用了自身作用域之外的变量,因此当其父作用域不再可用时,这些引用将作为闭包绑定到my_inner_函数
。要了解有关闭包的更多信息,请参阅(摘自保罗·鲁尼的评论)它被称为a。这被称为“闭包”。返回内部函数时,它捕获外部变量的绑定。