我对Python还比较陌生,所以请原谅我的无知。
我有两个作用于单个变量var
:的函数
var = 8
def func1():
print(var)
def func2():
var += 1
print(var)
除非我将var
定义为全局变量:,否则func2
将不起作用
def func2():
global var
var += 1
print(var)
什么功能允许我调用全局变量(如在func1
中(,但不允许我在不首先显式调用全局变量的情况下重新定义(如func2
中(?
编程常见问题解答解释了原因:
在Python中,只在函数内部引用的变量是隐含的全球性。如果变量在函数体,除非明确声明为全局。
尽管一开始有点令人惊讶,但经过片刻的考虑这一方面,对指定的变量要求全局提供了防止意外副作用。另一方面,如果全球化对于所有全局引用,都需要使用global时间您必须将对内置函数或导入模块的组件。这种混乱会挫败全球宣言对识别的有用性副作用。