函数 func 不再提供参数调用。而是通过 global x 告诉程序:这个 x 是一个全局变量。于是函数中的 x 和外部的 x 就成为了同一个变
量。这一次,当 x 在函数 func 内部被重新赋值后,外部的 x 也随之改变。
前面讲的局部变量和全局变量是 Python 中函数作用域最基本的情况。实际上,还有一些略复杂的情况,比如:
1
2
3
4
5
|
def func(): print ('X in the beginning of func(x): ', x) # x = 2 print ('X in the end of func(x): ', x) x = 50func()print ('X after calling func(x): ', x) |
输出:
1
2
3
|
X in the beginning of func(x): 50 X in the end of func(x): 50 X after calling func(x): 50 |
程序可以正常运行。虽然没有指明 global,函数内部还是使用到了外部定义的变量。然而一旦加上
1
|
x = 2 |
这句,程序就会报错。因为这时候,x 成为一个局部变量,它的作用域从定义处开始,到函数体末尾结束。
建议在写代码的过程中,显式地通过 global 来使用全局变量,避免在函数中直接使用外部变量