首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >内函数访问外部函数变量

内函数访问外部函数变量
EN

Stack Overflow用户
提问于 2017-01-04 22:41:26
回答 1查看 2.4K关注 0票数 2

让我们假设有以下简单代码:

代码语言:javascript
复制
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()                      

我想知道没有任何运行时错误。outer_var --外部函数的变量--只有在该函数运行时才可用,也就是说,它在my_outer_function结束时消失。但是当我调用get_inner()时,my_outer_function()已经结束了,所以我会打赌运行时出错,因为my_inner_function找不到outer_var

你怎么解释这一切?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-04 22:49:28

外部函数的变量只有在该函数运行时才可用,即当my_outer_function结束时它就消失了。

这不是完全正确的。这个变量在my_outer_function的作用域中是可用的。my_inner_function有它自己的声明范围和它的父范围。

my_inner_function引用它自己作用域之外的一个变量,因此当它的父作用域不再可用时,这些引用作为闭包绑定到my_inner_function。要了解更多关于闭包的信息,请参阅Can you explain closures (as they relate to Python)? (摘自Paul的评论)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41474465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档