傳的是值還是引用 構造字典陣列的乙個bug

2021-09-13 17:59:22 字數 1028 閱讀 8296

在做資料處理的時候, 碰到乙個奇怪的現象.

for tuple in list.most_common():

dict['name'] = tuple[0]

dict['value'] = tuple[1]

print(d1)

[, , , , , , ]
發現d1這個列表裡的每個元素都是一樣的. 檢查迴圈裡的tuple 和 dict 一切正常.

迴圈裡的d1 就不太正常...

for tuple in list.most_common():

dict['name'] = tuple[0]

dict['value'] = tuple[1]

print(d1)

[, ]

[, , ]

[, , , ]

[, , , , ]

修改後的**:

for tuple in list.most_common():

dict['name'] = tuple[0]

dict['value'] = tuple[1]

d = copy.copy(dict)

print(d1)

[, , , , , , , , , , , , , , ]
再次修改後的**:

for tuple in list.most_common():

# 把dict的定義放入 for 迴圈內

dict = {}

dict['name'] = tuple[0]

dict['value'] = tuple[1]

# d = copy.copy(dict)

print(d1)

ps: 嘗試了一下, js的arr.push(obj) 也有同樣的問題, 當然有良好編碼習慣的人是不會碰到這種問題的.

python函式傳參是傳值還是傳引用?

首先還是應該科普下函式引數傳遞機制 傳值和傳引用是什麼意思?函式引數傳遞機制問題在本質上是呼叫函式 過程 和被呼叫函式 過程 在呼叫發生時進行通訊的方法問題。基本的引數傳遞機制有兩種 值傳遞和引用傳遞。值傳遞 passl by value 過程中,被調函式的形式引數作為被調函式的區域性變數處理,即在...

python函式傳參是傳值還是傳引用?

首先還是應該科普下函式引數傳遞機制,傳值和傳引用是什麼意思?函式引數傳遞機制問題在本質上是呼叫函式 過程 和被呼叫函式 過程 在呼叫發生時進行通訊的方法問題。基本的引數傳遞機制有兩種 值傳遞和引用傳遞。值傳遞 passl by value 過程中,被調函式的形式引數作為被調函式的區域性變數處理,即在...

python函式傳參是傳值還是傳引用?

首先還是應該科普下函式引數傳遞機制,傳值和傳引用是什麼意思?函式引數傳遞機制問題在本質上是呼叫函式 過程 和被呼叫函式 過程 在呼叫發生時進行通訊的方法問題。基本的引數傳遞機制有兩種 值傳遞和引用傳遞。值傳遞 passl by value 過程中,被調函式的形式引數作為被調函式的區域性變數處理,即在...