Python 関数に渡された変数への変更は、関数のローカル スコープに残り、グローバル スコープには渡されないと思いました。しかし、テストスクリプトを書いたとき:
#! /usr/bin/python
from numpy import *
def fun(box, var):
box[0]=box[0]*4
var=var*4
return 0
ubox,x = array([1.]), 1.
print ubox,x
fun(ubox,x)
print ubox,x
出力は次のとおりです。
[myplay4]$ ./temp.py
[ 1.] 1.0
[ 4.] 1.0
整数変数 x は関数内の操作の影響を受けませんが、配列は影響を受けます。リストも影響を受けますが、これは個々の要素ではなくリスト/配列スライスを操作する場合にのみ発生します。
この場合、ローカルスコープがグローバルスコープに渡される理由を誰か説明してもらえますか?