Pythonのお勉強 Part75 (973レス)
Pythonのお勉強 Part75 http://mevius.5ch.net/test/read.cgi/tech/1743698824/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
635: デフォルトの名無しさん (オイコラミネオ MMfd-i7aF) [sage] 2025/08/09(土) 11:26:29.39 ID:BSmQSZbLM >>629 BASIC言語やFORTRANでも、 x=5 のように書いていた。 元はと言えば、数学の「定義 x≡5」の記法から来たものだと考えられる。 その流れを素直に踏襲すれば、 mov x,5 となる。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/635
636: デフォルトの名無しさん (オイコラミネオ MMfd-i7aF) [sage] 2025/08/09(土) 11:28:33.54 ID:BSmQSZbLM 定義だけでなく、数学でも「代入」の概念でも同じ記号を使う。 y=a*x^2+b*x+c に対して、 x=5 を代入するとyの値はどうなるか。 みたいな時の x=5 が、BASICやFORTRANの記法に似ている。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/636
637: デフォルトの名無しさん (ワッチョイ 4954-Dra7) [sage] 2025/08/09(土) 11:42:18.72 ID:DWV4fYZO0 数学からの借用だと思うと x = x + 1 が説明できないので捨てた方がいい http://mevius.5ch.net/test/read.cgi/tech/1743698824/637
638: デフォルトの名無しさん (ワッチョイ bbcc-BoCf) [sage] 2025/08/09(土) 12:02:44.93 ID:x+xCY04P0 数学の記法云々とか言い出したら、記号の内容がきちんと定義されている限りどんな記号を使っても自由という話にしかならんでしょ。=: とか <=>: とかで右辺に定義される対象を持ってくる記法だって普通にあるんだし。引数の順番とか中置二項演算子の被演算子の順番とかは、本質的に恣意的なものだよ。好みの問題とか、多数派に従っておく方が無難じゃないかとか、その程度の話。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/638
639: デフォルトの名無しさん (オイコラミネオ MMfd-i7aF) [sage] 2025/08/09(土) 12:49:26.30 ID:BSmQSZbLM >>638 数学にも、標準記法みたいなものが有る。 高校数学までにそれを教わる。 それによせているのが右翼だ。それに逆らうのが左翼。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/639
640: デフォルトの名無しさん (ワッチョイ 0fc3-kSZg) [] 2025/08/09(土) 13:24:44.86 ID:FKLQD73X0 >>637 プログラムってのは数式を解けって意味は無いから X=X+1 はおかしいっていうほうがおかしい http://mevius.5ch.net/test/read.cgi/tech/1743698824/640
641: デフォルトの名無しさん (ワッチョイ 4954-Dra7) [sage] 2025/08/09(土) 13:52:36.69 ID:DWV4fYZO0 x = x + 1に登場する=は、 数学で言う等号ではないし、定義でもないし、代入でもない let x as x + 1 くらいの意味だけど、もっと即物的に値の入る箱をイメージして x ← x + 1 xの中身を+1してxに入れる としか言いようがない 写像なら何か近いのがありそうだけど、やっぱりずれてる http://mevius.5ch.net/test/read.cgi/tech/1743698824/641
642: デフォルトの名無しさん (ブーイモ MMf3-VwDZ) [] 2025/08/09(土) 16:31:26.10 ID:S08gCjhtM >>641 超初心者だなw http://mevius.5ch.net/test/read.cgi/tech/1743698824/642
643: デフォルトの名無しさん (ブーイモ MMf3-VwDZ) [] 2025/08/09(土) 16:32:27.62 ID:S08gCjhtM >>641 いまだに数学だと教える先生がいるんだろ? http://mevius.5ch.net/test/read.cgi/tech/1743698824/643
644: デフォルトの名無しさん (ワッチョイ 765f-cTHU) [] 2025/08/10(日) 07:20:54.61 ID:bJx41RG60 右辺値と左辺値 http://mevius.5ch.net/test/read.cgi/tech/1743698824/644
645: デフォルトの名無しさん (ワッチョイ 4e10-1ngM) [sage] 2025/08/10(日) 08:12:33.70 ID:5Q2KXoFZ0 アドレスとオブジェクトの違い程度ならいいんだけど、C++でムーブがらみでxvalueとか出てくるとピンと来ないんだよね。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/645
646: デフォルトの名無しさん (ワッチョイ 0754-mJPu) [sage] 2025/08/10(日) 08:30:50.47 ID:rGiN2SBN0 右辺値と左辺値と言うと余計に判らなくなる 箱 = 値 というシンプルな理解だけで何も困らない 箱には名前があってアドレスを持っていて参照できる 値は箱に入れ終わったら忘れる http://mevius.5ch.net/test/read.cgi/tech/1743698824/646
647: デフォルトの名無しさん (ワッチョイ 232c-1ngM) [sage] 2025/08/10(日) 09:41:25.77 ID:wxvmtlzV0 コンピューターのアーキテクチャの理解としてはそういう理解の仕方が本質的だと思うけど、Pythonのように、名前(変数)が束縛されているメモリ領域に格納されているのがポインタであって、そのポイント先のオブジェクトが(明示的な参照外しの構文によることなく)名前参照式の評価結果になるような言語では、表れ方がちょっと屈折してくるよね。 「Pytnonでは、変数は、箱のイメージではなくラベル(名札)のイメージで説明する方が適切」というのはしばしば言われる謂ではあるけれども、自分が初心者の人にPytnonを説明するときにそのスタンスでいくかと言われると、ちょっと躊躇するものを感じるかな。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/647
648: デフォルトの名無しさん (ワッチョイ 7601-AJBo) [sage] 2025/08/10(日) 09:54:58.08 ID:Rqt3voUn0 >>646 x = “foo” y = x は 箱 = 値 箱 = 箱 なのか? 箱 = 箱とは? みたいな説明が必要になってくる 要は単純な箱と値だけでは説明がつかなくてそれらがどういうコンテキストで使われるかだったり箱から値を取り出して値として使う場合や箱自体を値として使う場合の説明も必要になってくるのでそうシンプルにはならない http://mevius.5ch.net/test/read.cgi/tech/1743698824/648
649: デフォルトの名無しさん (ワッチョイ 0754-mJPu) [sage] 2025/08/10(日) 09:55:11.34 ID:rGiN2SBN0 イコール記号の意味の説明だよ 箱 = 値 と書くと箱に値を入れるという意味になる 箱や値の具体的な内容は違う章 http://mevius.5ch.net/test/read.cgi/tech/1743698824/649
650: デフォルトの名無しさん (ワッチョイ 0e46-Fa+d) [] 2025/08/10(日) 10:18:31.58 ID:mfIur7J+0 ポインタ アドレス渡しってのを明記しない限り すべて値渡しでいいでしょ それをいつまでたっても値なのかアドレスなのか毎回混同するやつって トイレの男女マークはそれでいいのか?っつってるのと被って見える 実にうっとおしい http://mevius.5ch.net/test/read.cgi/tech/1743698824/650
651: デフォルトの名無しさん (ワッチョイ 2357-XAuV) [sage] 2025/08/10(日) 10:24:29.45 ID:w6PHgqLv0 箱は大昔のBASICのような基本コピーな言語でしか通用せんよね dictの中身がなぜ書き換わるのかイメージするには実体を意識したいし矢印かな http://mevius.5ch.net/test/read.cgi/tech/1743698824/651
652: デフォルトの名無しさん (ワッチョイ f66d-1ngM) [sage] 2025/08/10(日) 10:26:55.01 ID:wmWYPlFf0 648の例で言うと、x = "foo"は(C言語レベルでは)名前(変数)xが束縛されているメモリ領域(646風にいえばxという箱)にオブジェクト"foo"のアドレス情報を入れるという形で処理されるし、y = x は(C言語レベルでは)名前(変数)yが束縛されているメモリ領域(646風にいえばyという箱)にオブジェクト"foo"のアドレス情報を入れるという形で処理されることになる。したがって、(C言語レベルでは)646の箱=値という説明で一応一貫した説明ができる。ただし、そこでいう「値(オブジェクト)」はPythonレベルの値(オブジェクト)ではないので、その点に説明・注釈が必要になる。 ラベル(名札)のイメージによる説明というのは、名前x, y が束縛されているメモリ領域を特には観念せず、x, y をオブジェクト"foo"に貼り付けられるラベルとして捉えるということで、Pytnonレベルのみで考えるならこれはこれで1つの説明にはなっていると思う。ただ、listとかのコレクション・コンテナを理解するためには、結局どこかの段階でC言語のポインタの概念を大雑破にでもマスターせざるを得ないと思うんだよね。最初だけポインタの概念を回避してもあまり意味がないように思うので、それが、ラベル(名札)イメージによる説明にあまり乗りたくない個人的な理由。 ちなみに、648の逆パターンの例(x = 2 x = 5 のような再代入のパターン)も同様に考えることができる。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/652
653: デフォルトの名無しさん (ワッチョイ 5a4e-a/Iv) [] 2025/08/10(日) 10:32:52.85 ID:RtPBWHAF0 Pythonは全て参照の値渡し http://mevius.5ch.net/test/read.cgi/tech/1743698824/653
654: デフォルトの名無しさん (ワッチョイ 0754-mJPu) [sage] 2025/08/10(日) 10:51:05.32 ID:rGiN2SBN0 難しいこと考えなくても、オブジェクト渡しという理解でいい 同じオブジェクトは渡された先でも同じものを指す 内部実装的には同じアドレスを見てるからだけど、 別に別アドレスだったとしても同じ挙動をすればアドレスはどうでもいい 数値とか、対応するアドレスが存在しないものもある http://mevius.5ch.net/test/read.cgi/tech/1743698824/654
655: デフォルトの名無しさん (ワッチョイ 7601-AJBo) [sage] 2025/08/10(日) 10:55:58.34 ID:Rqt3voUn0 >>649 イコール記号の意味だけなら「代入」で十分じゃないの? 代入という概念を知らない人向けの説明なら余計に「箱」が後でどう使われるのかも一緒に説明する必要がある >>652 y = xではxという箱の中に入ってる値を一端取り出してからそれを複製してyという箱に入れないとダメだよね? 箱から取り出したり複製したりする状況(コンテキスト)も説明できなければ内部知識を知ってる人にだけなんとなく通じる説明方法でしかないと思う http://mevius.5ch.net/test/read.cgi/tech/1743698824/655
656: デフォルトの名無しさん (ワッチョイ f66d-1ngM) [sage] 2025/08/10(日) 11:16:35.60 ID:wmWYPlFf0 >>655 y = x という代入構文において、①右辺のx という名前参照式の評価(名前xが束縛されているメモリ領域に格納されているポインタのポイント先のオブジェクトを得ること)、②それを名前yに代入すること(C言語レベルでは652に書いたとおり、名前yが束縛されるメモリ領域に上記①で得られたオブジェクトのアドレス情報を格納するという形で処理される)という処理が行われるわけだけど、このプロセスに状況(コンテキスト)による違いなんてあるかな? 状況(コンテキスト)如何に拘らず、上記①②の処理がなされると思っていたんだけど。 まぁ、内部実装についてある程度知識がないと分かりづらいというのはそうだと思う。自分も非常に大雑把な知識しかないしね。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/656
657: デフォルトの名無しさん (ベーイモ MM06-ZDX3) [sage] 2025/08/10(日) 12:21:16.95 ID:rZf5P+kFM Pythonの場合は、numpyの配列のようにPythonオブジェクトの実体すらもPythonの世界の外に存在する物に対する荷札的な役割を果たしているケースがとても多く、 しかも初心者は学習を始めてすぐにそういうイレギュラーなものに触れることになる なので内部実装を元に説明するのは辛すぎるんだろう 荷札のアナロジーは致命的な矛盾なくだいたいうまく説明できるし実際の動作とそんなにかけ離れてもいない、悪くない説明だと思うよ http://mevius.5ch.net/test/read.cgi/tech/1743698824/657
658: デフォルトの名無しさん (ワッチョイ 7a0a-WVpU) [] 2025/08/10(日) 12:27:59.80 ID:swuUdv2c0 >>655 代入という言葉は、数学の変数に値を入れるという意味に引きずられるのでよくないんだよ http://mevius.5ch.net/test/read.cgi/tech/1743698824/658
659: デフォルトの名無しさん (ワッチョイ 0754-mJPu) [sage] 2025/08/10(日) 12:35:23.78 ID:rGiN2SBN0 荷札って箱に付けるものでしょ そうじゃなくて、実体とは別に存在するコピー可能な何かでないと そんな都合の良いものは自然界に存在しないので、いいアナロジーも見つからない http://mevius.5ch.net/test/read.cgi/tech/1743698824/659
660: デフォルトの名無しさん (アウアウウー Sac7-Kgix) [] 2025/08/10(日) 12:43:40.03 ID:YgXeJoCWa 数学からの借用だと思うと x = x + 1 は x[n] = x[n-1] + 1 を意味する http://mevius.5ch.net/test/read.cgi/tech/1743698824/660
661: デフォルトの名無しさん (ワッチョイ 7601-AJBo) [sage] 2025/08/10(日) 12:49:59.24 ID:Rqt3voUn0 >>656 (Pythonの)(y = x という)(代入構文における)(右辺の)x のxを修飾する部分がコンテキスト それにその説明だと>>646の言うシンプルな理解からは程遠い気がする http://mevius.5ch.net/test/read.cgi/tech/1743698824/661
662: デフォルトの名無しさん (ワッチョイ 7601-AJBo) [sage] 2025/08/10(日) 12:56:31.19 ID:Rqt3voUn0 >>658 数学の変数に値を入れるという意味に引きずられると何でよくないの? http://mevius.5ch.net/test/read.cgi/tech/1743698824/662
663: デフォルトの名無しさん (ワッチョイ 0754-mJPu) [sage] 2025/08/10(日) 13:01:51.64 ID:rGiN2SBN0 x = x + 1 の処理毎に加算されていく、というカウンタ動作は、 数列の漸化式というよりは、z^(-1)みたいな離散時間で捉えると動作とよく合う http://mevius.5ch.net/test/read.cgi/tech/1743698824/663
664: デフォルトの名無しさん (ワッチョイ 7a0a-WVpU) [] 2025/08/10(日) 13:03:29.02 ID:swuUdv2c0 >>662 数学だと正確にはその例でも左辺と右辺はイコールという意味だ http://mevius.5ch.net/test/read.cgi/tech/1743698824/664
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 309 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.009s