首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在另一个函数内调用函数后的新环境

在另一个函数内调用函数后的新环境
EN

Stack Overflow用户
提问于 2019-10-26 23:48:28
回答 1查看 47关注 0票数 0

我有这个程序:

代码语言:javascript
复制
a = 0
def f(c):
    a = c
    return a + g(a)
def g(b):
    return a + b
f(3)                     #returns 6                                     

它如何返回值6?到目前为止,我知道了当python解释器计算变量和过程时,绑定环境是如何创建的。此外,我还知道当调用一个简单的函数(从某种意义上说,它不调用新函数)时如何创建新环境的细节。在f内部调用g(a)之后,是否为g创建了一个新的环境,该环境比全局环境低一级,还是比f的环境低一级?

EN

回答 1

Stack Overflow用户

发布于 2019-10-26 23:51:38

它与以下完全相同:

代码语言:javascript
复制
a = 0
def f(c):
    var = c
    return var + g(var)
def g(b):
    return a + b
f(3)

与以下内容相同:

代码语言:javascript
复制
def f(c):
    var = c
    return var + g(var)
def g(b):
    return 0 + b
f(3)

更简化的是:

代码语言:javascript
复制
def f(c):
    return c + g(c)
def g(b):
    return b
f(3)

当只读取全局变量的值时,您可以在函数中使用它们。但是,如果您尝试为全局变量赋值,则需要使用global关键字,否则您将使用局部变量来隐藏全局变量:

代码语言:javascript
复制
x= 123
def foo():
    x = 999   # shadows global x
    print(x)  # 999
print(x)      # 123


x = 123
def foo():
    global x
    x = 999   # changes global x
    print(x)  # 999
print(x)      # 999
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58572303

复制
相关文章

相似问题

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