1. global关键字
在Python中,我们可以使用global关键字来声明一个全局变量。当我们在函数内部使用一个变量时,Python会先在函数内部的局部作用域中查找该变量,如果找不到,就会再去全局作用域中查找。
如果想要在函数内部修改全局变量的值,我们需要使用global关键字来告诉Python,这个变量是全局变量。
1.1 global关键字的用法
使用global关键字的语法如下:
global variable_name
将需要修改的全局变量名放在global后面。
下面是一个示例:
temperature = 0.6
def change_temperature():
global temperature
temperature = 1.0
change_temperature()
print(temperature) # 输出结果为1.0
在上面的示例中,我们在函数内部使用global关键字来声明temperature这个全局变量,然后在函数内部修改了它的值,最后打印出来的结果是1.0。
2. nonlocal关键字
除了全局变量,Python还支持嵌套作用域(即函数中嵌套函数的情况)。在嵌套函数中,我们可以使用nonlocal关键字来声明一个非局部变量。
当我们在内层函数中使用一个变量时,Python会首先在内层函数的局部作用域中查找该变量,如果找不到,就会再去外层函数的作用域中查找,一直到全局作用域中。
如果要在内层函数中修改外层函数的变量,就需要使用nonlocal关键字。
2.1 nonlocal关键字的用法
使用nonlocal关键字的语法如下:
nonlocal variable_name
将需要修改的变量名放在nonlocal后面。
下面是一个示例:
def outer_function():
temperature = 0.6
def inner_function():
nonlocal temperature
temperature = 1.0
inner_function()
print(temperature) # 输出结果为1.0
outer_function()
在上面的示例中,我们在内层函数inner_function中使用nonlocal关键字来声明temperature这个变量,然后在内层函数中修改了它的值。最后,在外层函数outer_function中打印temperature的值,结果为1.0。
总结
通过使用global关键字和nonlocal关键字,我们可以在函数内部访问和修改外部作用域中的变量。需要注意的是,过度使用全局变量和非局部变量会让程序变得难以理解和维护,所以在编写代码时要注意变量的作用域。