有时我们声明一个变量,但是我们可能需要修改或访问其声明的当前范围之外的值,该值可能在当前程序中的任何地方。在这种情况下,我们在声明变量的函数内使用Global关键字和变量名。如果变量不在函数内部,则它的作用域将自动为全局变量。
在下面的示例中,我们看到了函数外部的值,但是我们可以从函数内部访问它。因为这样的变量在范围上已经是全局的。
x = 56 def func(): y = x *2 return y print(func())
运行上面的代码将为我们提供以下结果:
输出结果
112
在下一个示例中,我们尝试更改函数内变量的值并得到错误。
x = 56 def func(): y = x *2 x = x+2 return y print(func())
运行上面的代码将为我们提供以下结果:
输出结果
nboundLocalError: local variable 'x' referenced before assignment
我们可以在函数内部使用全局范围修改变量值的唯一方法是将其声明为函数内部的全局变量。
x = 56 def func(): global x x = x + 2 y = x *2 return y print(func())
运行上面的代码给我们以下结果
输出结果
116
对于嵌套函数,我们在最里面的函数中创建全局变量,如以下示例所示。
def func_out(): x = 56 def func_in(): global x x = 20 print("x is: ",x) x = x + 3 y = x *2 print ("y is: ",y) func_in() func_out() print("x is: ",x)
运行上面的代码将为我们提供以下结果:
输出结果
x is: 20 y is: 46 x is: 23