将局部变量的范围扩展为全局变量

时间:2018-12-14 15:00:02

标签: python scope global-variables

在python中,我们可以声明一个全局变量,其他函数可以访问该变量。

my_global_var = 2

# foo can only access the variable for reading
def foo():
    print(my_global_var)

# bar can also write into the global variable
def bar():
    global my_global_var
    print(my_global_var)

这可行,但是假设我不想在foobar之外创建全局变量,而是希望foo创建局部变量并扩展范围将该变量禁止(以及其他任何函数)而不将其作为参数传递。

类似

def foo():
    # the scope of this variable is only foo. Can I make it global?
    my_global_var = 4  

# bar wants to be able to access (and maybe modify) the variable created by foo
def bar():
    global my_global_var
    print(my_global_var)

PD:对于评论,我认为我的问题不明白。

由于我知道如何使用全局变量(问题中的第一个示例使用它们),因此它显然不是该其他问题的重复项。

而且我也没有提出有关将变量作为参数传递或不使用全局变量的建议。

我的问题很具体。我可以将局部变量的范围扩展为全局变量吗?

是,可以通过这种方式完成,或者否,无法完成。如果答案是肯定的,我想知道该怎么做。

1 个答案:

答案 0 :(得分:0)

有许多方法可以解决此问题并进行某种模拟,但是实际上……不,没有办法精确地做到这一点。

范围还定义生存期。函数范围内的变量只能在函数运行时存在。一旦函数完成并且其作用域被破坏,变量就不再存在。如果希望变量继续存在,则它必须存在于也继续存在的范围内。您可以将两个函数嵌套在另一个函数中以在某种程度上获得该效果,但是很可能您想为此使用全局范围,该范围始终存在。