Python dict为local,而不是reference

时间:2013-03-13 18:39:13

标签: python class dictionary

我试图让我的小脚本工作,但我不知道问题是什么。

其中一种方法会修改我的测试dict var,即使我没有将其返回。我的意思是,我想在本地使用它而不是返回值。这不是我的实际代码,但您可以确定它具有代表性。

>>> class check:
...   def pathgen(self,test):
...     test['a']=0
...     print test
...   def assign(self):
...     test={'a':1}
...     self.pathgen(test)
...     print test #WILL PRINT 0
... 
>>> a=check()
>>> a.assign()
{'a': 0}
{'a': 0}

1 个答案:

答案 0 :(得分:3)

如果您希望对对象的更改对于更改它的函数是本地的,则需要复制该对象。您可以在致电时复制字典:

self.pathgen(dict(test))

或在被叫方内复制。

def pathgen(self, test):
    test = dict(test)
    ...