全局变量由多个函数改变 - 如何在Python中声明

时间:2014-06-02 15:49:28

标签: python python-3.x global-variables

我在多个功能中使用了一些变量 这包括通过每个函数更改变量值 我已经将变量声明为' global'在第一个功能。
我应该在每个函数中一次又一次地将此变量声明为global(并且这不会覆盖我在第一个函数中声明的第一个global变量)或者我不应该再次将其声明为{{1}在所有这些函数中(但是局部变量仍然会被视为global,因为我已经第一次声明了这个变量)?

3 个答案:

答案 0 :(得分:6)

您可以在每个函数定义中将变量声明为global。这是一个例子:

def f():
    global x
    x = 2
    print x
    x +=2 
    # This will assign a new value to the global variable x

def g():
    global x
    print x
    x += 3
    # This will assign a new value to the global variable x

f()
# Prints 2
g()
# Prints 4
print x
# Prints 7

答案 1 :(得分:3)

global关键字告诉解析器每个函数,在分配名称时不应将名称视为本地名称。

通常在函数中绑定的任何名称(赋值,用作函数体,在函数体中的import语句中使用等)都被解析器视为本地。

通过使用global关键字,解析器将生成字节码,而不是寻找全局名称。如果您有多个分配给全局的函数,则需要在所有这些函数中声明该名称global。然后,他们将在全局命名空间中查找名称。

请参阅global statement documentation

  

global语句是一个声明,它包含整个当前代码块。这意味着列出的标识符将被解释为全局变量。

Naming and Binding documentation

  

如果名称绑定在块中,则它是该块的局部变量。如果名称在模块级别绑定,则它是全局变量。 (模块代码块的变量是局部的和全局的。)如果在代码块中使用了变量但没有在那里定义,则它是一个自由变量。

答案 2 :(得分:-2)

  

我应该在每个函数中一次又一次地声明这个变量

您根本不应该有任何全局变量,并将这些变量和函数放入一个类中。