[python] 更改複製的變數卻一並修改原本的變數

點閱: 6

更改複製的變數卻一並修改原本的變數

記錄一下今天遇到的問題:我複製原本的變數到新的變數名稱,並修改新的變數內容,但這樣的修改一並改到了原本的變數,程式碼如下

myd = {'id': 'A1234'}
myd2 = myd
myd2['name'] = 'hello'
print(myd2)  # {'id': 'A1234', 'name': 'hello'}

print(myd)  # {'id': 'A1234', 'name': 'hello'}

查了一下 stackoverflow ,得知原因是 python 是用變數名稱去連結到物件內容的,因此指到 myd 的 myd2 被修改,實際上改到的是 myd 的內容,因此無論呼叫 myd 或 myd2 的結果都是被修改過的。

解決辦法是使用 copy() 函數

myd = {'id': 'A1234'}
myd2 = myd.copy()
myd2['name'] = 'hello'
print(myd2)  # {'id': 'A1234', 'name': 'hello'}
print(myd)  # {'id': 'A1234'}

收工

About the Author

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Related Posts