我有这个程序:
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的环境低一级?
发布于 2019-10-26 23:51:38
它与以下完全相同:
a = 0
def f(c):
var = c
return var + g(var)
def g(b):
return a + b
f(3)与以下内容相同:
def f(c):
var = c
return var + g(var)
def g(b):
return 0 + b
f(3)更简化的是:
def f(c):
return c + g(c)
def g(b):
return b
f(3)当只读取全局变量的值时,您可以在函数中使用它们。但是,如果您尝试为全局变量赋值,则需要使用global关键字,否则您将使用局部变量来隐藏全局变量:
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) # 999https://stackoverflow.com/questions/58572303
复制相似问题