python参数在模块中更改

时间:2018-03-15 13:20:52

标签: python module

当我执行此代码时,“list”参数在主模块中更改,但是“i”。为什么?如何更改模块中的“i”参数?

def func2(list, i):
    print (list, i)
    list += [4,1]
    i += 1
    print(list, i)
    return

j = 1
l = [0,1]
func2(l, j)
print("---",l , j)

感谢@JBernardo的提示。 真正的解决方案是将变量放在列表中。现在我可以改变这两个论点,这就是我想要的。

def func2(list, i):
    print (list, i)
    list += [4,1]
    i[0] = i[0]+1
    print(list, i[0])
    return

j = [1]
l = [0,1]
func2(l, j) 
print("---",l , j[0])

1 个答案:

答案 0 :(得分:2)

列表是可变的。你正在改变他们的内容。数字是不可变的,因此您必须先将其设置为global才能访问外部范围

def func():
    global var1, var2
    var1 += [1,2,3]
    var2 = 5


var1 = [0, 1]
var2 = 7
func()

在这种情况下,函数不接收任何参数,因为您想要更改全局状态