Python dict 是本地的,而不是引用

标签 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}

最佳答案

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

self.pathgen(dict(test))

或在被叫方内复制。

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

关于Python dict 是本地的,而不是引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15393730/

相关文章:

c# - 在 C# 中执行控制台应用程序?

c++ - 如何使用函数指针映射正确使用 boost::bind

python - 奇怪的 python 字典行为

c++ - OOP 迭代器和查找方法无法正常工作

python - Plotly Python 中的趋势线

Python 'end' 参数无效语法错误

python - django-allauth 将用户名设置为与电子邮件相同

C++ 初学者 - 使用结构和常量时遇到问题!

c++ - 作为类方法的内联函数

python - 创建一个具有时间步长和多个特征的新数组,例如 LSTM