作者: Bruce.
日時: 2008/5/23(01:33)
Bruce.です。

機械伯爵 さんは書きました (2008/05/22 20:18):
>  Bruce.さんとこの雑記帖経由、2ちゃんスレ。
> 
>  「関数の引数って参照渡しなの?」
> 
>  「はい、関数の引数は参照渡しです。
>  ただし、Pythonは『そもそも直接変数を使えません!(全部ポインタ)』」
> 
>  こう書いとけば、間違えないだろ☆(極論)
> 
>  というか、確か大体のテキストにはこう書いてあると思うのだけど、やっぱり、
> 「オブジェクト」という言葉の代わりに「うっかり」「変数」という言葉を
> 使ってしまう(私もよくやるけど)のがまずいんだよねぇ……
> 
>  あと「assignment」って「代入」と訳されるけど本来は「割り当て」であり、
> 数学の「代入(substitute)」のイメージで考えると、誤解の元かも。


別に変数でも何でもいいですが、BASIC時代(Cでも?)に使われた、変数 == 箱
モデルで説明するのは勘弁といったところでしょうか。そんなものにたとえて
覚えさせるから、関数(メソッド)の引数としてどのように振舞うかで混乱が起
きてしまう。

2月あたりに遭遇したblogだと思うんですが、図入りできちんと説明していた
ところがありましたね。英語でしたけどw
要は、オブジェクトの「実体」というのがあって、「変数」というのは
それを見つけるための(見分けるための)ラベルのようなもの。という。
ラベルが指している先の内容を書き換えるのと、ラベルに書かれている
内容を書き換えるというのは別物ですよ。と。

call by reference で変わるのは前者じゃなくて後者でなくてはいけない
(call by fererence/pass by referenceと呼べない)。

って、Pythonの短整数もポインタの先にあるんでしたっけ?

-- 
木村浩一
  I thought what I'd do was, I'd pretend I was one of those deaf-mutes or should I?
  mail kbk [at] kt.rim.or.jp
        web  www.kt.rim.or.jp/~kbk/zakkicho/
             homepage3.nifty.com/farstar/