筆者之前寫過一段介面的測試**,其中有乙個函式是替換字典中的值來做不同的入參處理,結果發現乙個bug,執行完一次後發現請求結果跟預期的不一樣,列印log發現第二次請求時的入參跟第二次的入參不一樣,最後發現是因為自己字典賦值導致的bug,具體**如下
def
copy_demo
(a):
c = a
c['name']=
"hello"
c['age']=
"18"
c['***'
]= random.randint(1,
10)return c
測試**
val =
for i in
range(0
,3):
result_val = copy_demo(val)
print
("result_val的值是"
.format
(result_val)
)print
("val的值是"
.format
(val)
)
3次的輸出結果分別是:
result_val的值是
val的值是
result_val的值是
val的值是
result_val的值是
val的值是
通過輸出我們可以發現val的值被改變了,每次入參都發生了變化!!!
出現這個問題的原因就在於我只進行了賦值操作,這樣其實a和c指向的是同乙個位址,乙個變化了,另乙個自然也跟著變,要解決這個問題,不能用賦值,只能用copy.deepcopy()來解決
python 字典的淺複製與深複製
copy 方法返回乙個新字典,包含的鍵值對與原來的字典相同,這個方法執行的是淺複製,因為值本身是原件,而非副本 如上圖所示,當替換副本中的值時,原件不受影響。然而修改副本中的值,原件也將發生變化,因為這是就地修改而不是替換,原件指向的也是被修改的值。即淺複製的副本發生替換時,原件不受影響,發生修改時...
Python中字典的複製和引用
author lxp 自定義函式 a p2 def myfunc pinfo print print pinfo pinfo 33 pinfo 33 0.0088 print pinfo pinfo 33 0.0044 print pinfo print myp p a print myp.ps m...
python中字典的排序和複製
在開發過程中通常要對字典進行排序,複製等操作,和列表一樣,字典的排序也採用sorted 函式,字典的複製除了可以使用update 函式外,還可以使用copy 函式,但是得注意二者之間的區別。字典的排序 先來演示字典的排序函式sort 的使用 print dict 按照key進行排序。items可以用...