全局变量是在函数外部声明的变量,但我们需要在函数内部使用它。
def func(): print(a) a=10 func()
10
在这里,变量a是全局的。由于它是在函数外部声明的,因此也可以在函数内部使用。因此,变量a的范围是全局的。
如果在函数内部创建与全局变量同名的变量,将会看到会发生什么。
在上面的示例中,变量a在函数外部声明,因此是全局变量。
如果我们在函数内声明另一个具有相同名称的变量,并带有另一个值。该变量将充当函数的局部变量,并且其范围将限于函数内部。在函数外部,全局变量将保留其原始值。
借助示例可以更好地理解它。
a=10 def func(): a=5 print("内部功能:",a) func() print("外部功能:",a)
内部功能: 5 外部功能: 10
在上面的示例中,a是全局变量,其值为10。稍后func()调用。
在内部func(),另一个变量a声明为具有不同值,其范围仅限于函数内部。因此,当稍后在函数外部打印a的值时,它带有与全局变量相同的原始值10。
当您需要在函数内部声明全局变量时,可以使用关键字global。
在函数内部声明的普通变量的作用域仅到函数结束为止。
但是,如果还要在函数外部使用变量,则在声明变量时使用global关键字。
在示例实现的帮助下了解两者之间的区别。
def func(): a=5 print("内部功能:",a) func() print("外部功能:",a)
内部功能: 5 Traceback (most recent call last): print("外部功能:",a) NameError: name 'a' is not defined
在上面的示例中,a的值不能在函数外部访问,因为它是局部变量。因此,访问外部函数的值将引发异常。
如果我们使用关键字global声明变量a,则可以解决上述示例中引发的异常。
def func(): global a a=5 print("内部功能:",a) func() print("外部功能:",a)
内部功能: 5 外部功能: 5
在上面的示例中,变量a是全局变量,因此也可以在函数外部访问其值。