Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 内部函数访问外部函数';s变量_Python - Fatal编程技术网

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。这被称为“闭包”。返回内部函数时,它捕获外部变量的绑定。