小弟在開發程序中遇到一個問題,直接上代碼:
Company = []
Company_temp = []
def company():
global Companys
global Companys_temp
讀資料庫,取資料,假設讀取資料為 ['1' '2' '3' '4'],并將值賦給Company_temp
print(Company_temp)
print(Company)
Company = Company_temp
Company_temp.append('a')
print(Company_temp)
print(Company)
結果為:['1', '2', '3', '4']
[]
['1', '2', '3', '4', 'a']
['1', '2', '3', '4', 'a']
我并沒有在Company陣列中添加'a',可為什么輸出會有這一項?感謝指導
uj5u.com熱心網友回復:
可以列印下兩個串列的地址看看就明白了uj5u.com熱心網友回復:
是指向同一個地址,是不是賦值惹的禍?兩個串列指向同一個地址,改變其中一個串列的數值,另一個也就跟著變了uj5u.com熱心網友回復:
python 用串列, 賦值要用切片拷貝的方法Company = Company_temp[:]
uj5u.com熱心網友回復:
深淺拷貝的問題吧company_temp=['1', '2', '3', '4']
company=company_temp.copy()
company_temp.append('a')
print(company_temp)
print(company)
uj5u.com熱心網友回復:
Company = Company_temp的意思不是把Company_temp的值賦給Company,而是將Company指向Company_temp的記憶體地址,當Company_temp.append('a')時,會在自己指向的記憶體地址中添加'a'。所以Company會讀取Company_temp記憶體地址中存盤的值。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/46706.html
