在 Python 中删除或更改函数中的全局变量

目录

Delete global variable from inside a function in Python

  1. 从Python中的函数内部删除全局变量
  2. Python:更改函数中全局变量的值

从 Python 函数内部删除全局变量

从函数内部删除全局变量:

  1. 使用global关键字将变量标记为global函数内部。
  2. 使用del语句删除变量。
主程序
my_var = 'hello world' def my_func(): global my_var del my_var print(my_var) # 👉️ 'hello world' my_func() # ✅ Variable is now deleted # ⛔️ NameError: name 'my_var' is not defined print(my_var)

my_var您可以从函数内部引用全局变量,但如果您尝试在函数主体中删除它,则会出现错误。

我们只能从声明它的同一作用域中删除一个变量,除非该变量已被标记为global

如果您想从函数内部重新分配全局变量,则行为相同。

Python: 改变函数中全局变量的值

要在函数中更改全局变量的值:

  1. 使用global关键字将变量标记为函数内部的全局变量。
  2. 在函数内重新分配变量。
  3. 调用函数来更改全局变量的值。
主程序
my_var = 'bobbyhadz.com' def my_func(): # 👇️ mark as global global my_var my_var = 'google.com' print(my_var) # 👉️ bobbyhadz.com # 👇️ call function to update global variable my_func() print(my_var) # 👉️ google.com

您可以从函数内部引用全局变量,但如果不先使用关键字将其标记为全局变量,则my_var无法更改其值。global

我们只能从声明它的同一范围更改变量的值,除非该变量已标记为global.

如果变量在函数体中被赋值,则它是局部变量,除非明确声明为global.

主程序
my_var = 'bobbyhadz.com' def my_func(): # 👇️ only has effect in the function my_var = 'google.com' print(my_var) # 👉️ google.com print(my_var) # 👉️ bobbyhadz.com my_func() print(my_var) # 👉️ bobbyhadz.com

您可以在函数内部引用全局变量,但如果您在函数主体中为变量赋值,则局部变量会覆盖全局变量(除非您将变量标记为 )global

如果您尝试在从函数内部更改其值之前读取全局变量,则会出现异常UnboundLocalError

主程序
my_var = 'bobbyhadz.com' def my_func(): # ⛔️ Error print(my_var) my_var = 'google.com' my_func()

我们试图my_var在函数中定义变量之前访问它。

global如果您需要在函数范围内定义变量之前访问该变量,则可以使用关键字。

主程序
my_var = 'bobbyhadz.com' def my_func(): # 👇️ mark as global global my_var print(my_var) # 👉️ bobbyhadz.com.com my_var = 'google.com' print(my_var) # 👉️ bobbyhadz.com my_func() print(my_var) # 👉️ google.com

我们使用global关键字将变量标记为全局变量,以便能够在从函数内部更改它之前读取它的值。

额外资源

您可以通过查看以下教程来了解有关相关主题的更多信息: