python 改变外部变量的值

python 改变外部变量的值

作者:Elara发布时间:2026-03-28阅读时长:0 分钟阅读次数:3

用户关注问题

Q
如何在函数中修改外部变量的值?

我想在Python函数内部改变函数外部定义的变量值,应该怎么做?

A

使用global关键字修改外部变量

在函数内部修改外部变量时,需要使用global关键字声明该变量,这样Python解释器才会将该变量视为全局变量,从而能够修改其值。例如:

x = 10

def modify():
    global x
    x = 20

modify()
print(x)  # 输出20

这样,函数内部的赋值操作会影响到函数外部的变量。

Q
为什么直接在函数中赋值无法改变函数外部的变量?

我在函数中给一个外部定义的变量重新赋值,但函数外部的变量值没有变,这是什么原因?

A

赋值操作默认在局部作用域内生效

Python函数内部对变量进行赋值时,默认会创建一个新的局部变量,除非使用global关键字声明该变量为全局变量。没有声明时,赋值仅对局部变量有效,外部同名变量的值不会改变。例如:

x = 5

def func():
    x = 10  # 创建局部变量x

func()
print(x)  # 仍然输出5

如果想修改外部变量,应使用global。

Q
如何通过函数间接改变列表等可变类型外部变量的内容?

我有一个列表变量,想在函数里修改它的元素而不改变变量引用,怎么做?

A

修改列表元素而非重新赋值引用

对于可变类型的数据结构(如列表、字典),可以直接在函数中修改其内容,而不需要使用global关键字。只需操作列表的元素,例如添加、删除或修改元素:

lst = [1, 2, 3]

def modify_list():
    lst[0] = 100  # 修改列表第一个元素
    lst.append(4)  # 添加新元素

modify_list()
print(lst)  # 输出[100, 2, 3, 4]

函数内改变的是列表的内容,外部变量仍然引用同一个列表。