前提・実現したいこと
pythonで、numpyの変数を入力しそれを適当に変換して返す自作関数を作成しました。
しかし、globalと定義していないにも関わらず元の変数も変更されてしまいます。
こちらの原因と解決策を教えていただけませんでしょうか。
python
1#想定通りに動く関数 2def test_func1(numbers_1): 3 numbers_1 = numbers_1*2 4 return numbers_1 5 6#想定通りに動かない関数 7def test_func2(numbers_2): 8 numbers_2[:] = numbers_2[:] * 2 9 return numbers_2 10 11test = np.array([2,3,3,4,9]) 12print(test_func1(test)) 13# [ 4 6 6 8 18] 14 15print(test) 16# [2 3 3 4 9] 17 18print(test_func2(test)) 19# [ 4 6 6 8 18] 20 21print(test) #testの値が上書きされている*** 22# [ 4 6 6 8 18]
試したこと
[]で範囲を指定しないと想定通りに行くのですが、範囲を指定すると上書きされてしまいます。
補足情報(FW/ツールのバージョンなど)
python3でjupyternotebook上で実行しています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/21 23:56