2我对 Python 比较陌生(使用 3.3.3)并且有一个与列表相关的问题。在函数内修改全局列表变量时(请不要讲全局变量的弊端),通常不需要在函数内使用 global 关键字声明列表 - 只要您坚持使用列表方法。特别是,您不能在不首先使用 global 关键字的情况下使用增强加法。让我感到惊讶的是,在函数外使用增广加法显然不会修改列表变量(仅列表内容),因此我希望可以在不使用 global 关键字的情况下在函数内使用它。这里有两个我无法调和的例子:
list_1 = []
def my_func():
list_1.append(0)
#list_1 += [0]
my_func()
print('list_1 =', list_1)
Run Code Online (Sandbox Code Playgroud)
list_1 = [0]正如预期的那样,这会打印,而注释掉的增强加法操作会生成一个关于在赋值之前使用局部变量的抱怨。
这是一个我无法与前一个协调的例子:
list_1 = [0]
list_2 = list_1
list_1 += [1]
print('list_2 =', list_2)
Run Code Online (Sandbox Code Playgroud)
这会打印list_2 = [0, 1],这向我表明list_1 += [1]没有修改 list_1 变量。我知道这list_1 = list[1] + [1]符合修改 list_1 的条件,但增强添加似乎没有。为什么在函数内部的增广加法需要使用 global 关键字?感谢您帮助理解这一点。
python ×1