我正在使用python 3.5,请解释代码结果:
@CachePut(value = "cache1", key = "#clientId")
public Map<String, Object> buildCache(Long clientId){
Map<String, Object> cacheMap= new HashMap<String, Object>();
//get values from remote db and store them in the local db as well as cache
return cacheMap;
}
@Cacheable(value = "cache1", key = "#clientId")
public Map<String, Object> getFromCache(Long clientId){
//get from local db
}
为什么在这段代码之后dict1 ['a']值变成'少于两个'?
答案 0 :(得分:1)
在python中,一切都是对象。当您编写dict1 = {}
时,您正在做的是将字典对象的实例分配给空dict()
到名为dict1
的对象。但是当您编写此行dict2=dict1
时,您告诉python将对象dict2
分配为引用完全相同的对象dict1
。意味着发生在一个人身上的任何变化都会发生在另一个人身上。
你想要做的是写dict2 = dict(dict1)
,它告诉python dict2
是一个字典对象的新实例,它与dict1
的值相同。现在当你改变一个值时,它不会影响另一个。
答案 1 :(得分:0)
修改强>
bruno desthuilliers评论是最好的答案
结束修改
几乎所有语言中的对象都相同,当你设置dict2 = dict1
时,它们在内存中是相同的
如果你想创建coppy你必须在python中创建 shalowcopy 或 deepcopy
dict2 = dict(dict1) # create a copy of dict1
x = {}
y=x # this make y pointer to x and two are one