首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >函数内部和外部的Python全局列表修改

函数内部和外部的Python全局列表修改
EN

Stack Overflow用户
提问于 2014-05-02 20:26:28
回答 1查看 2.3K关注 0票数 5

2i在Python中相对较新(使用3.3.3),并有一个列表相关的问题。当修改函数中的全局列表变量(请不要讲全局变量的坏处)时,通常不需要使用函数中的全局关键字声明列表--只要您坚持使用list方法。特别是,如果不首先使用全局关键字,就不能使用增广加法。令我惊讶的是,在函数之外使用增广加法显然并不是修改列表变量(仅修改列表内容),因此我希望可以在不使用全局关键字的情况下在函数中使用它。这里有两个我无法调和的例子:

代码语言:javascript
运行
复制
list_1 = []

def my_func():
    list_1.append(0)
    #list_1 += [0]

my_func()
print('list_1 =', list_1)

这将像预期的那样打印list_1 = [0],而注释掉的增广加法操作会生成在赋值之前使用局部变量的抱怨。

下面是一个与前面的例子不一致的例子:

代码语言:javascript
运行
复制
list_1 = [0]
list_2 = list_1
list_1 += [1]
print('list_2 =', list_2)

这将打印list_2 = [0, 1],这表明list_1 += [1]没有修改list_1变量。我知道list_1 = list[1] + [1]可以修改list_1,但是增广加法似乎没有。为什么函数内部的增广加法需要使用全局关键字?谢谢你能帮我理解这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-02 20:35:08

问题是,当函数体被解析时,在普通赋值或增广辅助中使用的所有变量都被视为局部变量,因此当函数被调用时,Python将不会在全局范围内查找这些变量,因此会引发错误。因此,您需要将这些变量指定为global,以便告诉Python在全局范围内查找它们。

另一种选择是使用list.extend()而不是+=

相关信息:

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23436385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档