[過去ログ]
【まず1嫁】くだすれPython(超初心者用) その59 (1002レス)
【まず1嫁】くだすれPython(超初心者用) その59 http://mevius.5ch.net/test/read.cgi/tech/1689241721/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
740: デフォルトの名無しさん [] 2024/06/25(火) 08:47:33.30 ID:PJlEmYUO >>737 オブジェクトだからどんな型でも参照渡しなんじゃないのか? もしかして、「参照渡し」という言葉をオレが誤解している? http://mevius.5ch.net/test/read.cgi/tech/1689241721/740
742: デフォルトの名無しさん [] 2024/06/25(火) 13:25:16.56 ID:PJlEmYUO >>741 それは引数の渡し方でなく、x = Noneによって xが新たな Noneオブジェクトを指した結果じゃないかな。 $ cat x.py def modify(xx, yy): print('xx', id(xx), xx) print('yy', id(yy), yy) xx = None # 代入により別オブジェクトを指す。 yy.clear() # 変更結果が返される。 print('xx', id(xx), xx) print('yy', id(yy), yy) x = [1] y = [11] print('x', id(x), x) print('y', id(y), y) modify(x, y) print('x', id(x), x) print('y', id(y), y) $ python3 x.py x 140253632444160 [1] y 140253627941632 [11] xx 140253632444160 [1] yy 140253627941632 [11] xx 140253637855360 None yy 140253627941632 [] x 140253632444160 [1] y 140253627941632 [] http://mevius.5ch.net/test/read.cgi/tech/1689241721/742
744: デフォルトの名無しさん [] 2024/06/25(火) 13:28:25.30 ID:PJlEmYUO >>741 で、C言語だとこんな感じかと想像するが、 変数 xの値である 1 を渡すことを、値渡し、 変数 xのポインタである 0x7ffed3b1f5ac を渡すことを、参照渡しと呼んでいた。 $ cat x.c #include <stdio.h> void modify(int *xx, int *yy) { printf("xx %p %d\n", xx, *xx); printf("yy %p %d\n", yy, *yy); int new_xx = 0; xx = &new_xx; /* 代入により別オブジェクトを指すPython風 */ *yy = 0; /* 変更結果が返される。 */ printf("xx %p %d\n", xx, *xx); printf("yy %p %d\n", yy, *yy); return; } int main(void) { int x = 1; int y = 11; modify(&x, &y); printf("x %p %d\n", &x, x); printf("y %p %d\n", &y, y); return 0; } $ cc x.c && ./a.out xx 0x7ffed3b1f5ac 1 yy 0x7ffed3b1f5a8 11 xx 0x7ffed3b1f58c 0 yy 0x7ffed3b1f5a8 0 x 0x7ffed3b1f5ac 1 y 0x7ffed3b1f5a8 0 http://mevius.5ch.net/test/read.cgi/tech/1689241721/744
747: 742 [] 2024/06/25(火) 14:10:18.90 ID:PJlEmYUO >>745 同じ渡し方の二つの引数の一方が出来て、他方が出来ないので、渡し方の問題じゃないよね、という話をしたよ。 >>746 Call by Reference の和訳は、ポインタ渡しでも参照渡しでも良いと思うよ。 http://mevius.5ch.net/test/read.cgi/tech/1689241721/747
751: デフォルトの名無しさん [] 2024/06/25(火) 14:37:32.71 ID:PJlEmYUO >>748,750 > Cで実装されてるスクリプト言語の引数の渡し方を論じてなんか意味があるのか? どうなんだろう? この手の話は、C言語の方が見通しやすかろうと思って添えたが。 意味が見出だせなければ無視して。Python例から等価っぽく想像しただけのものなので。 http://mevius.5ch.net/test/read.cgi/tech/1689241721/751
752: デフォルトの名無しさん [] 2024/06/25(火) 14:49:09.86 ID:PJlEmYUO >>750 > こいつが言いたいのは参照渡しってのは明示的にアドレスを渡すのではなく変数を渡すと自動でその参照を渡すようにコンパイルされるような言語ということを言いたいのだろうことは理解できるが 俺はその一文を理解できない。 シンプルに、 140253632444160 = id(x) の 140253632444160 に、呼び元呼び先ともにアクセスするので、それは「参照渡し」と言うのだと思っていた。 ということだよ。 http://mevius.5ch.net/test/read.cgi/tech/1689241721/752
760: デフォルトの名無しさん [] 2024/06/25(火) 19:08:21.24 ID:PJlEmYUO >>753,755,756,759 CS とは何ぞ? その CS的な参照渡しにおける「参照」とは整数以外の何なの? ただ、「参照渡し」とは、サブルーチンへの引数の渡し方でなく、サブルーチンからの引数の返り方を以て、 ・結果が呼び元に返ってくる ・呼び出し元の変数も同じように変更されるもの という性質を言うらしいことが、ボヤっと分かった。 で、参照渡しっぽい事がしたけりゃ、Awkのように配列で授受すれと。 俺は、>>737 と同様に、オブジェクト実体へのポインタや実体のIDの授受を参照渡しと呼ぶのだと思っていたよ。 http://mevius.5ch.net/test/read.cgi/tech/1689241721/760
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.043s