2013-12-14 126 views
0
spam = "woo" 
eggs = spam 
spam = "string" 
print eggs 
# prints woo 

的價值,它是不同的:更新一個變量的值,但是對於陣列更新的另一個

import numpy 
# The coefficients for the Taylor polynomial for exp(x) 
Taylor_coefficients = numpy.array(
[1.0, 0.5, 0.1666, 0.04164, 0.0083, 0.0014]) 
coeff = Taylor_coefficients 
coeff[1] = 0 
print Taylor_coefficients[:2] 
# prints [ 1. 0.] 

這裏發生了什麼,以及其他通用的數據類型不是數組這是否適用於?

+2

這(幾乎)與字符串與數組無關。它與明確分配與項目分配('a [b] = c')有關。 – delnan

+0

(可能的重複說明函數參數,但分配的行爲方式完全相同。) – delnan

回答

-1

行爲上的差異是由於可變對象和不可變對象之間的差異。閱讀wiki page以獲取更多關於python類型的信息。

當您使用spam = "string"時,由於字符串不可變(創建後無法更改),因此垃圾郵件會指向具有新字符串的新位置,這會使指向舊字符串的eggs處於完好狀態。但對於數組(或其他可變對象),coff = Taylor_coefficients將指向同一個對象,並且更改該對象將反映在對它的所有引用中。

相關問題