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关键字