我是初學者,在學習python時遇到困惑。如果我有以下Python代碼:Python混淆 - 約定,名稱和值
import numpy as np
X = np.array([1,0,0])
Y = X
X[0] = 2
print Y
Ÿ將被證明是array([2, 0, 0])
但是,如果我做到以下幾點:
import numpy as np
X = np.array([1,0,0])
Y = X
X = 2*X
print Y
Y
仍然是array([1,0,0])
什麼正在進行?
這裏你修改*局部變量'X' *這個改變不會反映到'Y',因爲'Y'甚至不知道'X'存在。 –
謝謝,對不起,我在帖子中不清楚。我在上面的原始代碼中將行X [0] = 2更改爲X = 2 * X. – SunnyIsaLearner
因爲賦值給slice/indexing操作會改變數據結構*,因爲使用'*'運算符會生成* new *數據結構。另外,閱讀並理解這個:http://nedbatchelder.com/text/names.html –