我在多个函数中使用了一些变量
这包括通过每个函数更改变量值。
我已经在第一个函数中将变量声明为"全局"。
我应该在每个函数中一次又一次地声明这个变量为global
(这不会覆盖我在第一个函数中声明的第一个global
变量)还是我不应该在所有这些函数中再次声明它为global
(但是那里的局部变量仍然会被视为global
,因为我已经声明了这个变量所以第一次)?
可以在每个函数定义中声明一个变量为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
global关键字告诉解析器每个函数一个名称在被赋值时不应该被视为本地的
通常在函数中绑定的任何名称(赋值、用作函数参数、在函数体的import语句中使用等)都会被解析器视为局部名称。
通过使用global
关键字,解析器将生成字节码,而字节码将查找全局名称。如果您有多个赋值给全局变量的函数,则需要在所有这些函数中声明名称global
。然后他们会在全局命名空间中查找该名称。
参见global
语句文档:
global
语句是一个适用于整个当前代码块的声明。这意味着列出的标识符将被解释为全局。
和命名和绑定文档:
如果在块中绑定了名称,则该名称是该块的局部变量。如果名称在模块级别绑定,则它是一个全局变量。(模块代码块的变量是局部的和全局的。)如果一个变量在代码块中使用但没有定义,则它是一个自由变量。
我应该在每个函数中一次又一次地声明这个变量为全局变量吗
你不应该有任何全局变量,把这些变量和函数放到一个类中。