私は、なぜ次のことが起こっているのか、絶対に唖然とします。
これが私のコードです:
def add_one(array):
new_array = array
length = len(array)
for i in range(length):
new_array[i] = new_array[i]+1
return new_array
x = [1,2,3,4,5];
y = add_one(x)
print x
print y
結果は次のとおりです。
[2, 3, 4, 5, 6]
[2, 3, 4, 5, 6]
xが変更された理由がわかりません。
私の推測:どういうわけか、xは関数add_oneのグローバル変数として与えられています。'new_array = array'を含めたので、配列が何らかの形でグローバル変数xである場合、xは変更されません。ただし、「new_array = array」が実行されると、どういうわけかnew_arrayもグローバル変数xになりました。私は問題を起こさなかった関数add_oneの代替バージョンを書きました:
def add_one(array):
new_array = []
length = len(array)
for i in range(length):
new_array.append(array[i]+1)
ローカル変数(つまり配列)が関数内のインデックスによって編集された場合、その関数の入力として取得されたグローバル変数に対してグローバルになりますか?
何が起こっているのかわかりません。説明をいただければ幸いです。