
サラの番
186
4
章
トムの関数
サラの関数
mystery.py
モジュール
参照渡しのデモ
トムは自分が優位であることをアピールしていますが、サラは落ち着いて椅子に座り、シェ
ルに入力する準備をしています。
IDLE
の編集ウィンドウのコードをもう一度示します。サラの
change
関数はいつでも実行可能です。
サラは
>>>
プロンプトに数行のコードを入力したあと椅子の背にもたれて腕を組み、「
Python
が
値呼び出しだけをサポートするなら、この振る舞いはどう説明するの?」とトムに言います。トム
は何も言えません。
サラがシェルに行った操作を確認してみましょう。
>>> numbers = [ 42, 256, 16 ]
>>> change(numbers)
実行前:
[42, 256, 16]
実行後:
[42, 256, 16, '
さらなるデータ
']
>>> numbers
[42, 256, 16, '
さらなるデータ
']
サラは、トムと同じ
リスト型のデータを
使って
change
関数を
呼び出しています。
何が起こったのでしょうか。
今回は引数の値が関数内と
シェルの両方で変更されて
います。これは、
Python
関数が参照渡しもサポート
しているように思えます。
おかしな振る舞いです。
トムの関数は明らかに値渡しを行っているのに対し、サラの関数は参照渡しを行っています。
どうしてこのようなことが起こるのでしょうか?
Python
は両方をサポートしているのでしょ
うか?