Python函数外部变量
在Python中,函数外部变量是指在函数定义之外声明的变量。这些变量可以在函数内部进行访问和修改,因为它们处于全局作用域中。在本文中,我们将探讨Python中函数外部变量的用法和注意事项,并提供一些示例代码来帮助你理解。
函数内部访问外部变量
在Python中,函数可以访问函数外部的变量。这是因为Python在函数中的作用域查找顺序是:局部作用域 -> 全局作用域 -> 内置作用域。如果在函数内部找不到变量的定义,Python会继续在外部作用域中查找。
# 定义一个全局变量
global_var = 10
def my_function():
# 访问全局变量
print(global_var)
# 调用函数
my_function()
输出结果为:
10
在上面的例子中,我们定义了一个全局变量global_var
,然后在my_function
函数中访问了该变量。函数使用print
语句输出全局变量的值。
函数内部修改外部变量
除了可以访问外部变量,函数还可以修改外部变量的值。但在修改之前,我们需要使用global
关键字将其声明为全局变量。
# 定义一个全局变量
global_var = 10
def my_function():
# 声明 global_var 为全局变量
global global_var
# 修改全局变量的值
global_var = 20
# 调用函数
my_function()
# 输出修改后的全局变量的值
print(global_var)
输出结果为:
20
在上面的例子中,我们使用global
关键字将global_var
声明为全局变量,并在函数中修改了其值。在调用函数之后,我们输出了修改后的全局变量的值,发现它已经被成功地修改了。
局部变量与全局变量的命名冲突
在函数内部,如果将一个变量命名为与外部变量相同的名称,那么函数将使用局部变量而不是全局变量。
# 定义一个全局变量
my_var = 10
def my_function():
# 声明一个与全局变量同名的局部变量
my_var = 20
# 输出局部变量的值
print(my_var)
# 调用函数
my_function()
# 输出全局变量的值
print(my_var)
输出结果为:
20
10
在上面的例子中,函数my_function
内部定义了一个与外部变量my_var
同名的局部变量。在函数内部,打印局部变量的值为20
;而在函数外部,打印全局变量的值为10
。这表明函数内部的局部变量会覆盖同名的全局变量。
注意事项
在使用函数外部变量时,有几个注意事项需要了解。
不可变类型的全局变量
对于不可变类型(例如整数、字符串和元组)的全局变量,函数内部不能直接修改其值。如果需要修改这些类型的全局变量,可以使用global
关键字重新赋值。
# 定义一个全局变量
my_var = 10
def my_function():
# 使用 global 关键字重新赋值
global my_var
my_var = 20
# 调用函数
my_function()
# 输出修改后的全局变量的值
print(my_var)
输出结果为:
20
在上面的例子中,我们使用global
关键字将my_var
声明为全局变量,并在函数内部重新赋值。在调用函数之后,我们输出了修改后的全局变量的值,可以看到它已经被成功地修改了。
可变类型的全局变量
对于可变类型(例如列表和字典)的全局变量,函数内部可以直接修改其值,无需使用global
关键字