基本的python.如何禁止更改列表的功能?

det*_*ett 2 python function list

>>> def test():
...    a.remove(1)
>>> a = [1,2]
>>> test()
>>> print a 
[2]
Run Code Online (Sandbox Code Playgroud)

为什么a平等[2]而不是[1,2]

900*_*000 6

列表是可变的.如果将它传递给函数,并且函数更改它,它将保持更改状态.

  • 使用不可变结构:元组: a = (1,2)
  • 通过原始列表的副本:b = list(a); b.remove(1)-现在ab具有不同的内容,a并没有改变.

另外,尽量不要使用可变的全局数据.传递a给函数,或者a作为对象的属性,并将函数作为其方法.