3

我正在尝试让我的小脚本正常工作,但我不知道问题出在哪里。

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}
4

1 回答 1

3

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

self.pathgen(dict(test))

或在被调用者内复制。

def pathgen(self, test):
    test = dict(test)
    ...
于 2013-03-13T18:46:17.697 回答