欢迎访问宙启技术站
智能推送

Python函数中使用global和nonlocal关键字

发布时间:2023-08-24 09:59:07

在Python中,global和nonlocal是两个特殊的关键字,用于修改变量的作用域。在函数内部,变量默认是局部变量,只在函数内部有效。然而,有时候我们需要在函数内部对外部的变量进行修改或访问。这就需要使用global和nonlocal关键字。

1. global关键字:

- 当在函数内部使用global关键字声明一个变量时,该变量会被视为全局变量,可以在函数内部和外部访问和修改。如果在函数内部对该变量进行修改,会影响到函数外部的变量。

- 例子:

     x = 10

     def func():
         global x
         x = 5
         print(x)

     func()  # 输出结果为5
     print(x)  # 输出结果为5
     

- 在上面的例子中,通过使用global关键字声明变量x为全局变量,函数内部修改x的值为5,函数外部的x也被修改为5。

2. nonlocal关键字:

- 当在嵌套函数中使用nonlocal关键字声明一个变量时,该变量会被视为非局部变量,可以在内层函数和外层函数中访问和修改。如果在内层函数中对该变量进行修改,会影响到外层函数和全局作用域的变量。在全局作用域中无法使用nonlocal关键字。

- 例子:

     def outer():
         x = 10

         def inner():
             nonlocal x
             x = 5
             print(x)

         inner()  # 输出结果为5
         print(x)  # 输出结果为5

     outer()
     

- 在上面的例子中,通过使用nonlocal关键字声明变量x为非局部变量,内层函数inner可以访问和修改外层函数outer的变量x,内层函数内部修改x的值为5,外层函数和全局作用域中的x也被修改为5。

总结:global关键字用于在函数内部声明一个变量为全局变量,可以在函数内部和外部访问和修改;nonlocal关键字用于在嵌套函数内部声明一个变量为非局部变量,可以在内层函数和外层函数中访问和修改。这两个关键字在函数中的使用可以方便地控制变量的作用域,实现对外部变量的访问和修改。