在Python中,全局变量和局部变量是两种不同类型的变量,它们的主要区别在于它们的作用域和生命周期。
全局变量:
全局变量定义在函数之外,通常是在程序的顶部。
它们可以在整个程序的任何地方被访问和修改,只要是在其被声明的作用域内。
它们在程序的整个运行期间都存在,即它们的生命周期是整个程序的运行时间。
例如:
python
global_var = 10
def my_function():
print(global_var) # 这里可以访问全局变量
my_function() # 输出: 10
局部变量:
局部变量定义在函数内部。
它们只能在定义它们的函数内部被访问。一旦函数执行完毕,局部变量就会被销毁,除非它们被返回或者被赋值给全局变量。
它们的生命周期是从函数被调用的那一刻开始,到函数返回的那一刻结束。
例如:
python
def my_function():
local_var = 20
print(local_var) # 这里可以访问局部变量
my_function() # 输出: 20
在这里尝试访问local_var会导致错误,因为它是一个局部变量,只在my_function()内部存在。
注意:虽然全局变量在整个程序中都是可见的,但在函数内部,如果你尝试修改一个全局变量,Python默认会认为你正在创建一个新的局部变量,除非你明确地使用global关键字声明。例如:
python
global_var = 10
def my_function():
global_var = 20 # 这里实际上创建了一个新的局部变量,而不是修改全局变量
print(global_var) # 输出: 20
my_function()
print(global_var) # 输出: 10,全局变量没有被修改
如果你想在函数内部修改全局变量,你需要使用global关键字来告诉Python你正在引用的是全局变量:
python
global_var = 10
def my_function():
global global_var # 声明我们正在引用全局变量
global_var = 20 # 现在我们修改的是全局变量
print(global_var) # 输出: 20
my_function()
print(global_var) # 输出: 20,全局变量已经被修改