!extend:default:vvvvv:1000:1024
!extend:default:vvvvv:1000:1024
↑スレ立てる毎に減るので、減ってたら3つに補充すること。
※前スレ
Pythonのお勉強 Part74
https://mevius.5ch.net/test/read.cgi/tech/1726881242/
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
探検
Pythonのお勉強 Part75
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 33d8-PysV)
2025/04/04(金) 01:47:04.18ID:UMpXJcmx0623デフォルトの名無しさん (ワッチョイ 4954-Dra7)
2025/08/08(金) 20:47:21.31ID:hOAz04UC0 ニーモニックが短いのは自動入力とか無かった頃の名残だな
そして最新マイコンでもやっぱり短くて暗号みたいなニーモニックになってる
覚えられない
そして最新マイコンでもやっぱり短くて暗号みたいなニーモニックになってる
覚えられない
624デフォルトの名無しさん (ワッチョイ 4f01-RCQa)
2025/08/08(金) 21:38:15.47ID:gdbP4Opx0 物理的に1行80文字のパンチカードまで遡りそう
625デフォルトの名無しさん (オイコラミネオ MMfd-i7aF)
2025/08/09(土) 00:09:42.89ID:FEkbar8MM rax=5 の意味を書くのを、以下のどれが一番分かり易いか、楽か、と言う意味だ:
1. mov rax,5
2. mov 5,rax
3. mov(from=5, to=rax)
順序からして1が一番分かり易いだろう。
それは、左翼たちは 2 がいいと主張するのだ。
1. mov rax,5
2. mov 5,rax
3. mov(from=5, to=rax)
順序からして1が一番分かり易いだろう。
それは、左翼たちは 2 がいいと主張するのだ。
626デフォルトの名無しさん (オイコラミネオ MMfd-i7aF)
2025/08/09(土) 00:10:33.01ID:FEkbar8MM 誤: それは、左翼たちは 2 がいいと主張するのだ。
正: それを、左翼たちは 2 がいいと主張するのだ。
正: それを、左翼たちは 2 がいいと主張するのだ。
627デフォルトの名無しさん (ワッチョイ d710-BoCf)
2025/08/09(土) 00:20:02.12ID:EpxR2zL40 別に積極的にどれかを支持するつもりはないのだけれど、フラットに見たら分かりやすいのは3で、書くのが楽なのが1・2じゃない?
「左翼」「右翼」という言葉をむやみに使いたがるやつは頭が悪いんだなというのが一番の感想なんだけどね。
「左翼」「右翼」という言葉をむやみに使いたがるやつは頭が悪いんだなというのが一番の感想なんだけどね。
628デフォルトの名無しさん (オイコラミネオ MMfd-i7aF)
2025/08/09(土) 00:26:20.38ID:FEkbar8MM >>627
敢えて大多数の人の習慣と逆をやろうとするのが左翼なんだよ。
敢えて大多数の人の習慣と逆をやろうとするのが左翼なんだよ。
629デフォルトの名無しさん (ワッチョイ 0bcf-tVwt)
2025/08/09(土) 02:27:43.20ID:NB4vZysX0 > 順序からして1が一番分かり易いだろう。
ここがウケるポイント
オレも慣れ親しんでるのは1だけどな
ここがウケるポイント
オレも慣れ親しんでるのは1だけどな
630デフォルトの名無しさん (ワッチョイ 4954-Dra7)
2025/08/09(土) 05:22:53.28ID:DWV4fYZO0 C言語の
char *strcpy(char *dest, const char *src);
dest, srcの順
いまだに逆だろと思う
char *strcpy(char *dest, const char *src);
dest, srcの順
いまだに逆だろと思う
631デフォルトの名無しさん (ワッチョイ eb49-2ooF)
2025/08/09(土) 08:30:47.32ID:U6LvWiSu0 give me a chocolate
英語のSVOO形
英語のSVOO形
632デフォルトの名無しさん (ワッチョイ 4954-Dra7)
2025/08/09(土) 08:44:00.58ID:DWV4fYZO0 copyやmoveはそんな文型取らないけどな
コマンドとしてのcopyやmoveはindirect objectを取って、
それはdirect objectに先行するという類推が働くのだろう
ファイルコピーのcopyは送り側が先
ファイル名やディレクトリを並べただけだと、directやindirectの区別が無い
イミディエイトとレジスタとかだと、レジスタがindirectな雰囲気がある
コマンドとしてのcopyやmoveはindirect objectを取って、
それはdirect objectに先行するという類推が働くのだろう
ファイルコピーのcopyは送り側が先
ファイル名やディレクトリを並べただけだと、directやindirectの区別が無い
イミディエイトとレジスタとかだと、レジスタがindirectな雰囲気がある
633デフォルトの名無しさん (ワッチョイ 0ff9-kSZg)
2025/08/09(土) 09:47:09.17ID:FKLQD73X0 代入は「は」
比較は「が」
にしよう
日本語って便利
aが0ならaはb
比較は「が」
にしよう
日本語って便利
aが0ならaはb
634デフォルトの名無しさん (ワッチョイ 7f2a-Jj3s)
2025/08/09(土) 10:30:12.46ID:fxyo4EMd0 「犬が西向きゃ尾は東」みたいな。
635デフォルトの名無しさん (オイコラミネオ MMfd-i7aF)
2025/08/09(土) 11:26:29.39ID:BSmQSZbLM >>629
BASIC言語やFORTRANでも、
x=5
のように書いていた。
元はと言えば、数学の「定義 x≡5」の記法から来たものだと考えられる。
その流れを素直に踏襲すれば、
mov x,5
となる。
BASIC言語やFORTRANでも、
x=5
のように書いていた。
元はと言えば、数学の「定義 x≡5」の記法から来たものだと考えられる。
その流れを素直に踏襲すれば、
mov x,5
となる。
636デフォルトの名無しさん (オイコラミネオ MMfd-i7aF)
2025/08/09(土) 11:28:33.54ID:BSmQSZbLM 定義だけでなく、数学でも「代入」の概念でも同じ記号を使う。
y=a*x^2+b*x+c
に対して、
x=5
を代入するとyの値はどうなるか。
みたいな時の x=5 が、BASICやFORTRANの記法に似ている。
y=a*x^2+b*x+c
に対して、
x=5
を代入するとyの値はどうなるか。
みたいな時の x=5 が、BASICやFORTRANの記法に似ている。
637デフォルトの名無しさん (ワッチョイ 4954-Dra7)
2025/08/09(土) 11:42:18.72ID:DWV4fYZO0 数学からの借用だと思うと
x = x + 1
が説明できないので捨てた方がいい
x = x + 1
が説明できないので捨てた方がいい
638デフォルトの名無しさん (ワッチョイ bbcc-BoCf)
2025/08/09(土) 12:02:44.93ID:x+xCY04P0 数学の記法云々とか言い出したら、記号の内容がきちんと定義されている限りどんな記号を使っても自由という話にしかならんでしょ。=: とか <=>: とかで右辺に定義される対象を持ってくる記法だって普通にあるんだし。引数の順番とか中置二項演算子の被演算子の順番とかは、本質的に恣意的なものだよ。好みの問題とか、多数派に従っておく方が無難じゃないかとか、その程度の話。
639デフォルトの名無しさん (オイコラミネオ MMfd-i7aF)
2025/08/09(土) 12:49:26.30ID:BSmQSZbLM640デフォルトの名無しさん (ワッチョイ 0fc3-kSZg)
2025/08/09(土) 13:24:44.86ID:FKLQD73X0641デフォルトの名無しさん (ワッチョイ 4954-Dra7)
2025/08/09(土) 13:52:36.69ID:DWV4fYZO0 x = x + 1に登場する=は、
数学で言う等号ではないし、定義でもないし、代入でもない
let x as x + 1
くらいの意味だけど、もっと即物的に値の入る箱をイメージして
x ← x + 1
xの中身を+1してxに入れる
としか言いようがない
写像なら何か近いのがありそうだけど、やっぱりずれてる
数学で言う等号ではないし、定義でもないし、代入でもない
let x as x + 1
くらいの意味だけど、もっと即物的に値の入る箱をイメージして
x ← x + 1
xの中身を+1してxに入れる
としか言いようがない
写像なら何か近いのがありそうだけど、やっぱりずれてる
642デフォルトの名無しさん (ブーイモ MMf3-VwDZ)
2025/08/09(土) 16:31:26.10ID:S08gCjhtM >>641
超初心者だなw
超初心者だなw
643デフォルトの名無しさん (ブーイモ MMf3-VwDZ)
2025/08/09(土) 16:32:27.62ID:S08gCjhtM >>641
いまだに数学だと教える先生がいるんだろ?
いまだに数学だと教える先生がいるんだろ?
644デフォルトの名無しさん (ワッチョイ 765f-cTHU)
2025/08/10(日) 07:20:54.61ID:bJx41RG60 右辺値と左辺値
645デフォルトの名無しさん (ワッチョイ 4e10-1ngM)
2025/08/10(日) 08:12:33.70ID:5Q2KXoFZ0 アドレスとオブジェクトの違い程度ならいいんだけど、C++でムーブがらみでxvalueとか出てくるとピンと来ないんだよね。
646デフォルトの名無しさん (ワッチョイ 0754-mJPu)
2025/08/10(日) 08:30:50.47ID:rGiN2SBN0 右辺値と左辺値と言うと余計に判らなくなる
箱 = 値
というシンプルな理解だけで何も困らない
箱には名前があってアドレスを持っていて参照できる
値は箱に入れ終わったら忘れる
箱 = 値
というシンプルな理解だけで何も困らない
箱には名前があってアドレスを持っていて参照できる
値は箱に入れ終わったら忘れる
647デフォルトの名無しさん (ワッチョイ 232c-1ngM)
2025/08/10(日) 09:41:25.77ID:wxvmtlzV0 コンピューターのアーキテクチャの理解としてはそういう理解の仕方が本質的だと思うけど、Pythonのように、名前(変数)が束縛されているメモリ領域に格納されているのがポインタであって、そのポイント先のオブジェクトが(明示的な参照外しの構文によることなく)名前参照式の評価結果になるような言語では、表れ方がちょっと屈折してくるよね。
「Pytnonでは、変数は、箱のイメージではなくラベル(名札)のイメージで説明する方が適切」というのはしばしば言われる謂ではあるけれども、自分が初心者の人にPytnonを説明するときにそのスタンスでいくかと言われると、ちょっと躊躇するものを感じるかな。
「Pytnonでは、変数は、箱のイメージではなくラベル(名札)のイメージで説明する方が適切」というのはしばしば言われる謂ではあるけれども、自分が初心者の人にPytnonを説明するときにそのスタンスでいくかと言われると、ちょっと躊躇するものを感じるかな。
648デフォルトの名無しさん (ワッチョイ 7601-AJBo)
2025/08/10(日) 09:54:58.08ID:Rqt3voUn0 >>646
x = “foo”
y = x
は
箱 = 値
箱 = 箱
なのか?
箱 = 箱とは?
みたいな説明が必要になってくる
要は単純な箱と値だけでは説明がつかなくてそれらがどういうコンテキストで使われるかだったり箱から値を取り出して値として使う場合や箱自体を値として使う場合の説明も必要になってくるのでそうシンプルにはならない
x = “foo”
y = x
は
箱 = 値
箱 = 箱
なのか?
箱 = 箱とは?
みたいな説明が必要になってくる
要は単純な箱と値だけでは説明がつかなくてそれらがどういうコンテキストで使われるかだったり箱から値を取り出して値として使う場合や箱自体を値として使う場合の説明も必要になってくるのでそうシンプルにはならない
649デフォルトの名無しさん (ワッチョイ 0754-mJPu)
2025/08/10(日) 09:55:11.34ID:rGiN2SBN0 イコール記号の意味の説明だよ
箱 = 値
と書くと箱に値を入れるという意味になる
箱や値の具体的な内容は違う章
箱 = 値
と書くと箱に値を入れるという意味になる
箱や値の具体的な内容は違う章
650デフォルトの名無しさん (ワッチョイ 0e46-Fa+d)
2025/08/10(日) 10:18:31.58ID:mfIur7J+0 ポインタ アドレス渡しってのを明記しない限り
すべて値渡しでいいでしょ
それをいつまでたっても値なのかアドレスなのか毎回混同するやつって
トイレの男女マークはそれでいいのか?っつってるのと被って見える
実にうっとおしい
すべて値渡しでいいでしょ
それをいつまでたっても値なのかアドレスなのか毎回混同するやつって
トイレの男女マークはそれでいいのか?っつってるのと被って見える
実にうっとおしい
651デフォルトの名無しさん (ワッチョイ 2357-XAuV)
2025/08/10(日) 10:24:29.45ID:w6PHgqLv0 箱は大昔のBASICのような基本コピーな言語でしか通用せんよね
dictの中身がなぜ書き換わるのかイメージするには実体を意識したいし矢印かな
dictの中身がなぜ書き換わるのかイメージするには実体を意識したいし矢印かな
652デフォルトの名無しさん (ワッチョイ f66d-1ngM)
2025/08/10(日) 10:26:55.01ID: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 のような再代入のパターン)も同様に考えることができる。
ラベル(名札)のイメージによる説明というのは、名前x, y が束縛されているメモリ領域を特には観念せず、x, y をオブジェクト"foo"に貼り付けられるラベルとして捉えるということで、Pytnonレベルのみで考えるならこれはこれで1つの説明にはなっていると思う。ただ、listとかのコレクション・コンテナを理解するためには、結局どこかの段階でC言語のポインタの概念を大雑破にでもマスターせざるを得ないと思うんだよね。最初だけポインタの概念を回避してもあまり意味がないように思うので、それが、ラベル(名札)イメージによる説明にあまり乗りたくない個人的な理由。
ちなみに、648の逆パターンの例(x = 2 x = 5 のような再代入のパターン)も同様に考えることができる。
653デフォルトの名無しさん (ワッチョイ 5a4e-a/Iv)
2025/08/10(日) 10:32:52.85ID:RtPBWHAF0 Pythonは全て参照の値渡し
654デフォルトの名無しさん (ワッチョイ 0754-mJPu)
2025/08/10(日) 10:51:05.32ID:rGiN2SBN0 難しいこと考えなくても、オブジェクト渡しという理解でいい
同じオブジェクトは渡された先でも同じものを指す
内部実装的には同じアドレスを見てるからだけど、
別に別アドレスだったとしても同じ挙動をすればアドレスはどうでもいい
数値とか、対応するアドレスが存在しないものもある
同じオブジェクトは渡された先でも同じものを指す
内部実装的には同じアドレスを見てるからだけど、
別に別アドレスだったとしても同じ挙動をすればアドレスはどうでもいい
数値とか、対応するアドレスが存在しないものもある
655デフォルトの名無しさん (ワッチョイ 7601-AJBo)
2025/08/10(日) 10:55:58.34ID:Rqt3voUn0656デフォルトの名無しさん (ワッチョイ f66d-1ngM)
2025/08/10(日) 11:16:35.60ID:wmWYPlFf0 >>655
y = x という代入構文において、①右辺のx という名前参照式の評価(名前xが束縛されているメモリ領域に格納されているポインタのポイント先のオブジェクトを得ること)、②それを名前yに代入すること(C言語レベルでは652に書いたとおり、名前yが束縛されるメモリ領域に上記①で得られたオブジェクトのアドレス情報を格納するという形で処理される)という処理が行われるわけだけど、このプロセスに状況(コンテキスト)による違いなんてあるかな? 状況(コンテキスト)如何に拘らず、上記①②の処理がなされると思っていたんだけど。
まぁ、内部実装についてある程度知識がないと分かりづらいというのはそうだと思う。自分も非常に大雑把な知識しかないしね。
y = x という代入構文において、①右辺のx という名前参照式の評価(名前xが束縛されているメモリ領域に格納されているポインタのポイント先のオブジェクトを得ること)、②それを名前yに代入すること(C言語レベルでは652に書いたとおり、名前yが束縛されるメモリ領域に上記①で得られたオブジェクトのアドレス情報を格納するという形で処理される)という処理が行われるわけだけど、このプロセスに状況(コンテキスト)による違いなんてあるかな? 状況(コンテキスト)如何に拘らず、上記①②の処理がなされると思っていたんだけど。
まぁ、内部実装についてある程度知識がないと分かりづらいというのはそうだと思う。自分も非常に大雑把な知識しかないしね。
657デフォルトの名無しさん (ベーイモ MM06-ZDX3)
2025/08/10(日) 12:21:16.95ID:rZf5P+kFM Pythonの場合は、numpyの配列のようにPythonオブジェクトの実体すらもPythonの世界の外に存在する物に対する荷札的な役割を果たしているケースがとても多く、
しかも初心者は学習を始めてすぐにそういうイレギュラーなものに触れることになる
なので内部実装を元に説明するのは辛すぎるんだろう
荷札のアナロジーは致命的な矛盾なくだいたいうまく説明できるし実際の動作とそんなにかけ離れてもいない、悪くない説明だと思うよ
しかも初心者は学習を始めてすぐにそういうイレギュラーなものに触れることになる
なので内部実装を元に説明するのは辛すぎるんだろう
荷札のアナロジーは致命的な矛盾なくだいたいうまく説明できるし実際の動作とそんなにかけ離れてもいない、悪くない説明だと思うよ
658デフォルトの名無しさん (ワッチョイ 7a0a-WVpU)
2025/08/10(日) 12:27:59.80ID:swuUdv2c0 >>655
代入という言葉は、数学の変数に値を入れるという意味に引きずられるのでよくないんだよ
代入という言葉は、数学の変数に値を入れるという意味に引きずられるのでよくないんだよ
659デフォルトの名無しさん (ワッチョイ 0754-mJPu)
2025/08/10(日) 12:35:23.78ID:rGiN2SBN0 荷札って箱に付けるものでしょ
そうじゃなくて、実体とは別に存在するコピー可能な何かでないと
そんな都合の良いものは自然界に存在しないので、いいアナロジーも見つからない
そうじゃなくて、実体とは別に存在するコピー可能な何かでないと
そんな都合の良いものは自然界に存在しないので、いいアナロジーも見つからない
660デフォルトの名無しさん (アウアウウー Sac7-Kgix)
2025/08/10(日) 12:43:40.03ID:YgXeJoCWa 数学からの借用だと思うと
x = x + 1
は
x[n] = x[n-1] + 1
を意味する
x = x + 1
は
x[n] = x[n-1] + 1
を意味する
661デフォルトの名無しさん (ワッチョイ 7601-AJBo)
2025/08/10(日) 12:49:59.24ID:Rqt3voUn0662デフォルトの名無しさん (ワッチョイ 7601-AJBo)
2025/08/10(日) 12:56:31.19ID:Rqt3voUn0 >>658
数学の変数に値を入れるという意味に引きずられると何でよくないの?
数学の変数に値を入れるという意味に引きずられると何でよくないの?
663デフォルトの名無しさん (ワッチョイ 0754-mJPu)
2025/08/10(日) 13:01:51.64ID:rGiN2SBN0 x = x + 1
の処理毎に加算されていく、というカウンタ動作は、
数列の漸化式というよりは、z^(-1)みたいな離散時間で捉えると動作とよく合う
の処理毎に加算されていく、というカウンタ動作は、
数列の漸化式というよりは、z^(-1)みたいな離散時間で捉えると動作とよく合う
664デフォルトの名無しさん (ワッチョイ 7a0a-WVpU)
2025/08/10(日) 13:03:29.02ID:swuUdv2c0 >>662
数学だと正確にはその例でも左辺と右辺はイコールという意味だ
数学だと正確にはその例でも左辺と右辺はイコールという意味だ
665デフォルトの名無しさん (ワッチョイ 0754-mJPu)
2025/08/10(日) 13:08:38.63ID:rGiN2SBN0 代入(assign)は割り当てと同じ意味で、何かを別のもので置き換える
y = x + 1
なら何も困らない
x = x + 1
は割り当てではなくて関係式(equation)になって、xは未知数
そして解けない
y = x + 1
なら何も困らない
x = x + 1
は割り当てではなくて関係式(equation)になって、xは未知数
そして解けない
666デフォルトの名無しさん (ワッチョイ f6ce-1ngM)
2025/08/10(日) 13:22:53.03ID:wmWYPlFf0 >>657
コレクション・コンテナを理解するためには、ラベル(名札)のアナロジーによらない方が正確に理解できるし、コレクション・コンテナの重要性を考えるとそれは致命的な弱点だと思うけどね。たとえば、tupleのimmutabilityに関してtupleオブジェクトの要素であるlistの要素に変更があってもそれはtupleのimmutabilityには反しないということを学ぶけど、それは内部実装のイメージがないとわかりにくいと思うよ。
初めのうちから内部実装をベースに理解しようとするのはたしかにムリがあるけれども、ラベル(名札)のアナロジーによる説明は所詮小手先の誤魔化しに過ぎないので、どこかの段階で内部実装に基づく(といっても大したレベルではなく、C言語のポインタの概念の基本を知っていれば足りるレベル)理解に切り替えた方が良いと思うけどね。
>>661
自分は、代入構文の説明としては、結局は箱のイメージで説明するのが(主にラベル(名札)のアナロジーによる説明との比較で)ベターではないかと考えているので、その点では646にも近い立場だけど、それがシンプルに理解できるとは微塵も考えていない。箱に格納されるのはアドレス情報であってそれ自体としてはPytnonのオブジェクトではないし、C言語レベルの内部実装に関する知識に依拠した説明になるからね。647に書いたとおり、本来的には(C言語レベルでは)比較的シンプルなはずのアイデアが、Pytnonでは(仕方のないことではあるけれども)屈折した表れ方になるなぁと思っている。
なお、「コンテキスト(状況)」という語をどういう趣旨で使いたかったのかというのは分かったけど、652に対する批判の文脈でどういう意味合いを持たせたかったのかはよく分からないな。
コレクション・コンテナを理解するためには、ラベル(名札)のアナロジーによらない方が正確に理解できるし、コレクション・コンテナの重要性を考えるとそれは致命的な弱点だと思うけどね。たとえば、tupleのimmutabilityに関してtupleオブジェクトの要素であるlistの要素に変更があってもそれはtupleのimmutabilityには反しないということを学ぶけど、それは内部実装のイメージがないとわかりにくいと思うよ。
初めのうちから内部実装をベースに理解しようとするのはたしかにムリがあるけれども、ラベル(名札)のアナロジーによる説明は所詮小手先の誤魔化しに過ぎないので、どこかの段階で内部実装に基づく(といっても大したレベルではなく、C言語のポインタの概念の基本を知っていれば足りるレベル)理解に切り替えた方が良いと思うけどね。
>>661
自分は、代入構文の説明としては、結局は箱のイメージで説明するのが(主にラベル(名札)のアナロジーによる説明との比較で)ベターではないかと考えているので、その点では646にも近い立場だけど、それがシンプルに理解できるとは微塵も考えていない。箱に格納されるのはアドレス情報であってそれ自体としてはPytnonのオブジェクトではないし、C言語レベルの内部実装に関する知識に依拠した説明になるからね。647に書いたとおり、本来的には(C言語レベルでは)比較的シンプルなはずのアイデアが、Pytnonでは(仕方のないことではあるけれども)屈折した表れ方になるなぁと思っている。
なお、「コンテキスト(状況)」という語をどういう趣旨で使いたかったのかというのは分かったけど、652に対する批判の文脈でどういう意味合いを持たせたかったのかはよく分からないな。
667デフォルトの名無しさん (ワッチョイ 1af4-ZDX3)
2025/08/10(日) 13:25:39.30ID:WyYSCohm0 >>659
わかってないな、コピーしなくていいんだよ
x = A() # Aの実体をどこかに作成し、荷札xを貼り付ける
y = x # xが貼り付けられている実体に追加で荷札yを貼り付ける
辻褄は合うだろう?
わかってないな、コピーしなくていいんだよ
x = A() # Aの実体をどこかに作成し、荷札xを貼り付ける
y = x # xが貼り付けられている実体に追加で荷札yを貼り付ける
辻褄は合うだろう?
668デフォルトの名無しさん (ワッチョイ 0754-mJPu)
2025/08/10(日) 13:45:18.60ID:rGiN2SBN0 荷札という名称が悪すぎるわw
実体の所有者(複数可)が誰か判るような管理リスト、みたいなイメージ
実際にはリストじゃないからこの時点で乖離があるけど
登記簿とか株券の裏を複数所有可能にした的な
所有してる訳でもないのでズレる
なんで「参照」の一言を参照使わずに説明するのがこんなに困難なのか
実体の所有者(複数可)が誰か判るような管理リスト、みたいなイメージ
実際にはリストじゃないからこの時点で乖離があるけど
登記簿とか株券の裏を複数所有可能にした的な
所有してる訳でもないのでズレる
なんで「参照」の一言を参照使わずに説明するのがこんなに困難なのか
669デフォルトの名無しさん (ワッチョイ 1af2-ZDX3)
2025/08/10(日) 14:04:35.99ID:WyYSCohm0 >>666
t = (x, y)
u = t
これは、荷札xの付いた実体に対して荷札t[0]を、荷札yの実体に対して同様に荷札t[1]を貼り付ける、
同時に、荷札t[0]とt[1]を管理するために”t[0], t[1]”と書かれた台帳を作成し、その台帳に荷札uを付けると解釈すればよい
これは参照の向きを逆に捉えて参照される側が参照元を記憶していると考えているだけなので、基本的にはこのような説明で矛盾は生じない
荷札名から実体を探すのが大変だという問題は残るけどね
t = (x, y)
u = t
これは、荷札xの付いた実体に対して荷札t[0]を、荷札yの実体に対して同様に荷札t[1]を貼り付ける、
同時に、荷札t[0]とt[1]を管理するために”t[0], t[1]”と書かれた台帳を作成し、その台帳に荷札uを付けると解釈すればよい
これは参照の向きを逆に捉えて参照される側が参照元を記憶していると考えているだけなので、基本的にはこのような説明で矛盾は生じない
荷札名から実体を探すのが大変だという問題は残るけどね
670デフォルトの名無しさん (ワッチョイ f6ce-1ngM)
2025/08/10(日) 14:29:10.70ID:wmWYPlFf0 仮にそれをそのまま実装に反映させるなら、Pytnonオブジェクトに(被参照カウント数に加えて)参照元のリストも持たせるってことでしょ。
そうではなく、単に解釈モデルに過ぎないってことなら、内部実装がそうなっているわけでもないのに、あえてそんな不自然な解釈モデルを作ってまで荷札(ラベル・名札)のアナロジーに拘る意味ってあるのかな? たとえばそれで、(666でちょっと触れた)tupleの要素であるlistの要素を変更してもtupleのimmutabilityに反しないことの説明がしやすくなったりする?
そうではなく、単に解釈モデルに過ぎないってことなら、内部実装がそうなっているわけでもないのに、あえてそんな不自然な解釈モデルを作ってまで荷札(ラベル・名札)のアナロジーに拘る意味ってあるのかな? たとえばそれで、(666でちょっと触れた)tupleの要素であるlistの要素を変更してもtupleのimmutabilityに反しないことの説明がしやすくなったりする?
671デフォルトの名無しさん (ワッチョイ 7601-AJBo)
2025/08/10(日) 15:10:39.92ID:BWOE9N0b0 >>664, 665
y = x + 1なら「yにx + 1を割り当てる」「yをx + 1で置き換える」
x = x + 1なら「xにx + 1を割り当てる」「xをx + 1で置き換える」
で特に困らないと思うんだけど
数学の場合は変数が指し示す値が同じスコープ内で変化しない大前提があるからそれを元に「代入」を考えると「xにx+1を代入する」がおかしいという感覚になるのでは?
それともイコールじゃなくて「x ← x + 1」なら←は代入ですと言ってもしっくりくるのかな?
y = x + 1なら「yにx + 1を割り当てる」「yをx + 1で置き換える」
x = x + 1なら「xにx + 1を割り当てる」「xをx + 1で置き換える」
で特に困らないと思うんだけど
数学の場合は変数が指し示す値が同じスコープ内で変化しない大前提があるからそれを元に「代入」を考えると「xにx+1を代入する」がおかしいという感覚になるのでは?
それともイコールじゃなくて「x ← x + 1」なら←は代入ですと言ってもしっくりくるのかな?
672デフォルトの名無しさん (ワッチョイ 7a0a-WVpU)
2025/08/10(日) 15:49:18.97ID:swuUdv2c0 >>671
だから:=にしているプログラミング言語もある
私は「代入」という言葉を否定している人間だ。
「代入」は数学の記法の見た目と同じだから出てきた言い回しにすぎない。
仕事では「設定」などと呼ぶ。英語でもsetと呼んでいる。
だから:=にしているプログラミング言語もある
私は「代入」という言葉を否定している人間だ。
「代入」は数学の記法の見た目と同じだから出てきた言い回しにすぎない。
仕事では「設定」などと呼ぶ。英語でもsetと呼んでいる。
673デフォルトの名無しさん (ワッチョイ 7601-AJBo)
2025/08/10(日) 15:53:58.39ID:BWOE9N0b0674デフォルトの名無しさん (ワッチョイ 0754-mJPu)
2025/08/10(日) 15:57:29.66ID:rGiN2SBN0 代入という訳語の気が利きすぎてるんだよな
assignのニュアンスそのままなら代入は出てこない
単に関連付けをしてるだけ
代わりに入れるという何か動きを持った訳語にしたせいで、逆に理解を阻害する
assignのニュアンスそのままなら代入は出てこない
単に関連付けをしてるだけ
代わりに入れるという何か動きを持った訳語にしたせいで、逆に理解を阻害する
675デフォルトの名無しさん (ベーイモ MM06-ZDX3)
2025/08/10(日) 16:00:48.44ID:VcYsNhlgM >>672
setには、ある既存の構造を正しく整った状態へと変えるというニュアンスがある
単なる変数の代入は変数の中身をまるっと置き換えているだけで既存の構造を変化させているわけではないし、
新しい値もそれが正しく整ったものとは限らず、ごく一時的なものだったりする
なのでより直接的なassignが用いられる
setには、ある既存の構造を正しく整った状態へと変えるというニュアンスがある
単なる変数の代入は変数の中身をまるっと置き換えているだけで既存の構造を変化させているわけではないし、
新しい値もそれが正しく整ったものとは限らず、ごく一時的なものだったりする
なのでより直接的なassignが用いられる
676デフォルトの名無しさん (ワッチョイ 7a0a-WVpU)
2025/08/10(日) 16:14:57.79ID:swuUdv2c0 >>675
Pythonの話なら私は知らない。
Pythonの話なら私は知らない。
677デフォルトの名無しさん (ワッチョイ f64c-1ngM)
2025/08/10(日) 16:46:12.05ID:wmWYPlFf0 Pytnonの言語仕様として「代入文」という名称で規定されているんだから、ひとまずこのスレで「代入」と呼ぶことには何の問題もないと思うけどね。それが数学における代入概念とは意味が違うから別の呼び方をすべきだというのは1つの意見としては傾聴に値すると思うけど、それはまた別の話でしょ。
>>673
それは661でコンテキスト(状況)として挙げられた要素に対応する違いであるか甚だ疑問だし、そもそも「箱を箱の中身が示す値として取り扱う」というようなふわっとした理解だから混乱するのでは。
大前提として、①名前と②名前が束縛されるメモリ領域(=箱)とは区別される概念だけどこれはいい? それから、②名前が束縛されるメモリ領域(=箱)と③そこに格納されている実体(オブジェクト・値)も区別される概念だけどこっちはいいよね。たぶん、①②の区別が曖昧だから「箱を箱の中身が示す値として取り扱う」というような表現が出てくるんだと思うけど。
注意すべきは「変数」という用語の多義性で、この語は上記①〜③のいずれを指すか曖昧なまま使われがち。かつそういう曖昧な認識のまま「変数=箱」という説明がされがちなので混乱が起きるんだと思うけどね。なお、そういう観点からいうと、646の「箱=値」という表記の仕方も(直感的にはわかりやすいけれども)こういう曖昧な理解を助長する弊害はあるんだろう。
上記のような概念的な区別がきちんとできている限り、コンテキスト(状況)如何で変わるような話ではないということは理解しやすいと思うけどどうかな(あるいは、必要なのは概念的な区別であって、コンテキスト(状況)の場合分けではないという言い方をしても良い)。
>>673
それは661でコンテキスト(状況)として挙げられた要素に対応する違いであるか甚だ疑問だし、そもそも「箱を箱の中身が示す値として取り扱う」というようなふわっとした理解だから混乱するのでは。
大前提として、①名前と②名前が束縛されるメモリ領域(=箱)とは区別される概念だけどこれはいい? それから、②名前が束縛されるメモリ領域(=箱)と③そこに格納されている実体(オブジェクト・値)も区別される概念だけどこっちはいいよね。たぶん、①②の区別が曖昧だから「箱を箱の中身が示す値として取り扱う」というような表現が出てくるんだと思うけど。
注意すべきは「変数」という用語の多義性で、この語は上記①〜③のいずれを指すか曖昧なまま使われがち。かつそういう曖昧な認識のまま「変数=箱」という説明がされがちなので混乱が起きるんだと思うけどね。なお、そういう観点からいうと、646の「箱=値」という表記の仕方も(直感的にはわかりやすいけれども)こういう曖昧な理解を助長する弊害はあるんだろう。
上記のような概念的な区別がきちんとできている限り、コンテキスト(状況)如何で変わるような話ではないということは理解しやすいと思うけどどうかな(あるいは、必要なのは概念的な区別であって、コンテキスト(状況)の場合分けではないという言い方をしても良い)。
678デフォルトの名無しさん (ワッチョイ 7a0a-WVpU)
2025/08/10(日) 17:03:01.76ID:swuUdv2c0 箱は伝統的なプログラミング入門書が使うわかりにくい例えだしな
それより丸数字の使用が気になるぞ
それより丸数字の使用が気になるぞ
679デフォルトの名無しさん (ワッチョイ 7a0a-WVpU)
2025/08/10(日) 17:11:26.30ID:swuUdv2c0 ドキュメンテーションのない仕事をしているのがはっきりとわかるよなあ
680デフォルトの名無しさん (ワッチョイ f64c-1ngM)
2025/08/10(日) 17:15:06.72ID:wmWYPlFf0 メモリ領域を箱に例えるのはコンピューターのアーキテクチャーに忠実な良い例えだと思うけどね。Pytnonみたいな言語ではC言語レベルに還元しないと正確な理解に到達できないという憾みはあるが、それでもラベル(名札・荷札)のアナロジーのような曖昧なイメージに頼るよりよほど良いと思うよ。
ところで、丸数字って今でも読みづらく化けたりする? 5chみたいなところで使う分には、もう、そんなに気にしなくても良い時代かなと思っていたんだが。
ところで、丸数字って今でも読みづらく化けたりする? 5chみたいなところで使う分には、もう、そんなに気にしなくても良い時代かなと思っていたんだが。
681デフォルトの名無しさん (ワッチョイ 0754-mJPu)
2025/08/10(日) 17:20:18.25ID:rGiN2SBN0 一番気になるのは改行しないことだな
682デフォルトの名無しさん (ワッチョイ 7601-AJBo)
2025/08/10(日) 18:04:10.77ID:BWOE9N0b0683デフォルトの名無しさん (ワッチョイ 7a0a-WVpU)
2025/08/10(日) 18:34:46.42ID:swuUdv2c0 アセンブラのニーモニックが辞書を片手に見るか、覚えていないといけないのをわかりやすく表現しただけのものをマシン語の並び順すら知らずにこねくり回した説明をしているのは滑稽
684デフォルトの名無しさん (ワッチョイ 7a0a-WVpU)
2025/08/10(日) 18:45:58.86ID:swuUdv2c0 >>682
CPUのレジスタがメモリのような連続した長いものでないため、コンピューターではレジスタで収まるものとそうでないものの区別がある。
コンピューターそのものがCPUとメモリという別のものを組み合わせているから、メモリへの参照なのかどうかは曖昧にしたまま進化しただけ。
CPUのレジスタがメモリのような連続した長いものでないため、コンピューターではレジスタで収まるものとそうでないものの区別がある。
コンピューターそのものがCPUとメモリという別のものを組み合わせているから、メモリへの参照なのかどうかは曖昧にしたまま進化しただけ。
685デフォルトの名無しさん (ワッチョイ f64c-1ngM)
2025/08/10(日) 19:11:26.73ID:wmWYPlFf0 >>682
何の説明もなくって、代入文の右辺の式が評価されるのは代入文の言語仕様そのままでしょ。何か不明確な点ってある?
代入文の左辺か右辺かの違いもコンテキスト(状況)の違いであって、そのいずれであるかによって言語処理系による名前(変数)の扱いが異なるという趣旨のことを主張したいのなら別に積極的に異論をとなえるつもりもないけれども、それについて、Pytnonの言語リファレンス等で明らかになっていることに付け加えて何か説明しなきゃいけないことってあるかな?
「箱自体を値として使う場合」(648)とか「箱を箱の中身が示す値として使う状況」(673)というのは概念上の区別が不十分であることに基づく不正確な表現・理解だと思うけど、その点が正された後になお何か理解できない点があるの?
何の説明もなくって、代入文の右辺の式が評価されるのは代入文の言語仕様そのままでしょ。何か不明確な点ってある?
代入文の左辺か右辺かの違いもコンテキスト(状況)の違いであって、そのいずれであるかによって言語処理系による名前(変数)の扱いが異なるという趣旨のことを主張したいのなら別に積極的に異論をとなえるつもりもないけれども、それについて、Pytnonの言語リファレンス等で明らかになっていることに付け加えて何か説明しなきゃいけないことってあるかな?
「箱自体を値として使う場合」(648)とか「箱を箱の中身が示す値として使う状況」(673)というのは概念上の区別が不十分であることに基づく不正確な表現・理解だと思うけど、その点が正された後になお何か理解できない点があるの?
686デフォルトの名無しさん (ワッチョイ 3e5f-ZDX3)
2025/08/10(日) 19:30:23.90ID:EbzyEcBr0 2のオブジェクトがあって
x=2だとxは2のオブジェクトを参照?
オブジェクトどんだけ先に用意すんの?
x=2だとxは2のオブジェクトを参照?
オブジェクトどんだけ先に用意すんの?
687デフォルトの名無しさん (ワッチョイ 7a0a-WVpU)
2025/08/10(日) 19:32:17.91ID:swuUdv2c0 >>686
コードに2と書いてある時点で、2もメモリ上に存在しているんだよ?
コードに2と書いてある時点で、2もメモリ上に存在しているんだよ?
688デフォルトの名無しさん (ワッチョイ 7a0a-WVpU)
2025/08/10(日) 19:32:51.39ID:swuUdv2c0 >>685 はただの老害
689デフォルトの名無しさん (ワッチョイ f64c-1ngM)
2025/08/10(日) 19:35:35.63ID:wmWYPlFf0 2がオブジェクトであることは print( id( 2 ) ) とかしてみれば分かる。
よく使う整数はあらかじめ生成しているんじゃなかったっけ。どの範囲かは以前このスレで見たような気がするが忘れちゃった。
よく使う整数はあらかじめ生成しているんじゃなかったっけ。どの範囲かは以前このスレで見たような気がするが忘れちゃった。
690デフォルトの名無しさん (ワッチョイ 0754-mJPu)
2025/08/10(日) 19:36:05.96ID:rGiN2SBN0 数値もオブジェクトと知った時点でその疑問に行き当たるよな
文字列がオブジェクトなのは、文字列自体が格納されたアドレスだから普通に判る
数値は整数どころか浮動小数点数でもオブジェクトで、事前に用意したら無限に要る
単にオブジェクトは必ずしもアドレスじゃなくて、数値をbit表記したものが渡されるだけ
文字列がオブジェクトなのは、文字列自体が格納されたアドレスだから普通に判る
数値は整数どころか浮動小数点数でもオブジェクトで、事前に用意したら無限に要る
単にオブジェクトは必ずしもアドレスじゃなくて、数値をbit表記したものが渡されるだけ
691デフォルトの名無しさん (ワッチョイ f64c-1ngM)
2025/08/10(日) 19:48:29.35ID:wmWYPlFf0 RubyとかJavaScriptと違ってPytnonは即値を使わず全部PyObjectじゃなかったっけ? 正直、記憶が曖昧なので自信はないが。
692デフォルトの名無しさん (ワッチョイ 1a79-MCtg)
2025/08/10(日) 20:18:34.90ID:WEeWhG2x0 このあたりの話かな
https://docs.python.org/ja/3/c-api/long.html
PyObject *PyLong_FromLong(long v)
戻り値: 新しい参照。 次に属します: Stable ABI.
v から新たな PyLongObject オブジェクトを生成して返します。失敗のときには NULL を返します。
現在の実装では、-5 から 256 までの全ての整数に対する整数オブジェクトの配列を保持します。この範囲の数を生成すると、実際には既存のオブジェクトに対する参照が返るようになっています。
https://docs.python.org/ja/3/c-api/long.html
PyObject *PyLong_FromLong(long v)
戻り値: 新しい参照。 次に属します: Stable ABI.
v から新たな PyLongObject オブジェクトを生成して返します。失敗のときには NULL を返します。
現在の実装では、-5 から 256 までの全ての整数に対する整数オブジェクトの配列を保持します。この範囲の数を生成すると、実際には既存のオブジェクトに対する参照が返るようになっています。
693デフォルトの名無しさん (ワッチョイ 7a0a-WVpU)
2025/08/10(日) 21:54:22.66ID:swuUdv2c0 Pythonは後になって「オブジェクト」という用語を使い始めた誤魔化し集団。
694デフォルトの名無しさん (ワッチョイ de01-AJBo)
2025/08/10(日) 23:13:13.88ID:ZpaHmpjx0 >>685
言語仕様はおろかプログラミングにおける代入を理解してないような初心者に対して代入文とはどういうものか説明しようとして「箱 = 値」というアナロジーを使ってるんでしょ?
なのに説明できてない箇所を指摘すると「それは言語仕様を知ってればわかるからいいよね?文句ある?」みたいな開き直りをされても失笑するしかないよ
言語仕様はおろかプログラミングにおける代入を理解してないような初心者に対して代入文とはどういうものか説明しようとして「箱 = 値」というアナロジーを使ってるんでしょ?
なのに説明できてない箇所を指摘すると「それは言語仕様を知ってればわかるからいいよね?文句ある?」みたいな開き直りをされても失笑するしかないよ
695デフォルトの名無しさん (ワッチョイ 232c-1ngM)
2025/08/10(日) 23:31:54.49ID:wxvmtlzV0 >>694
646は、「言語仕様はおろかプログラミングにおける代入を理解してないような初心者に対して代入文とはどういうものか説明しようとして「箱 = 値」というアナロジーを使ってる」のかもしれないが、自分はそんなつもりは全くないな。652や656で書いたような説明をそんな初心者が理解できるわけないでしょ。Pytnonのような言語の代入文をきちんと理解するにはそれなりに前提知識がいる。それが大変だから、ラベル(名札・荷札)のアナロジーのような、そこそこ良い線はいっているけれども本質的な理解からは隔たりがある説明が蔓延しているわけで。
646は、「言語仕様はおろかプログラミングにおける代入を理解してないような初心者に対して代入文とはどういうものか説明しようとして「箱 = 値」というアナロジーを使ってる」のかもしれないが、自分はそんなつもりは全くないな。652や656で書いたような説明をそんな初心者が理解できるわけないでしょ。Pytnonのような言語の代入文をきちんと理解するにはそれなりに前提知識がいる。それが大変だから、ラベル(名札・荷札)のアナロジーのような、そこそこ良い線はいっているけれども本質的な理解からは隔たりがある説明が蔓延しているわけで。
696デフォルトの名無しさん (ワッチョイ 174f-Fa+d)
2025/08/11(月) 10:30:52.65ID:hg5eV/6v0 CPUはレジスタに根渡ししてるだけなのにな
高級言語は余計なことやりすぎなんだよ
高級言語は余計なことやりすぎなんだよ
697デフォルトの名無しさん (ワッチョイ 9a02-QbuV)
2025/08/11(月) 12:14:18.55ID:oIjo7VRO0 AIを作ってるが、
Pythonは型が明記されてないから、わかりずらいな…
C++のほうが見やすい
Pythonは型が明記されてないから、わかりずらいな…
C++のほうが見やすい
698デフォルトの名無しさん (ワッチョイ b680-kDJb)
2025/08/11(月) 12:23:50.21ID:M47h2EOs0 正直俺もどうにかC++に持ってこれないか無駄な努力してる
whisperとかはありがたい設計なんだけど翻訳系がなー
boost::pythonもcythonも結構Cじゃ完結しないのね
whisperとかはありがたい設計なんだけど翻訳系がなー
boost::pythonもcythonも結構Cじゃ完結しないのね
699デフォルトの名無しさん (ワッチョイ 5a4e-a/Iv)
2025/08/11(月) 14:33:28.70ID:uBk9CY7Y0 C++なら値なのか参照なのかポインタなのか一目で分かるからな
上の議論もc++なら一発で解決する
上の議論もc++なら一発で解決する
700デフォルトの名無しさん (ワッチョイ 0754-mJPu)
2025/08/11(月) 14:38:05.58ID:Xx9EOjxc0 deepcopy必須な再帰呼び出しをリファクタリングしてたらすっきり書けすぎて、
deepcopy部分が暗黙になってしまって逆に危険に
deepcopy部分が暗黙になってしまって逆に危険に
701デフォルトの名無しさん (ワッチョイ 3e3e-ZDX3)
2025/08/12(火) 04:07:24.02ID:nMX81I590702デフォルトの名無しさん (ワッチョイ 4e10-1ngM)
2025/08/12(火) 08:04:19.47ID:i9fPXIIb0703デフォルトの名無しさん (ワッチョイ df7c-J6sU)
2025/08/12(火) 09:10:49.53ID:rnDCu4n50 >>697
型ヒントぐらい使え
型ヒントぐらい使え
704デフォルトの名無しさん (ワッチョイ 230f-1ngM)
2025/08/12(火) 09:28:38.40ID:ob7DnR/R0 typingもバージョンアップのたびに機能が追加されるけれど、正直、フォローできているのは4分の1もないくらいかな。ある程度プラクティスが固まって本でも出たらそれに従うつもりではいるけれど、TypeGuardとかParamSpecとかを自分のコードで使うことはなさそう。
ヌル安全関係の演算子とかは、自分でも何とか理解できそうなので追加が可能なら欲しいかも。
ヌル安全関係の演算子とかは、自分でも何とか理解できそうなので追加が可能なら欲しいかも。
705デフォルトの名無しさん (ワッチョイ 0754-mJPu)
2025/08/12(火) 09:32:25.25ID:lkNbq5IJ0 全部書いて自動チェック機能も常用しないと意味がない
必要なとこだけコメントで十分
必要なとこだけコメントで十分
706デフォルトの名無しさん (ワッチョイ f6c1-1ngM)
2025/08/12(火) 09:59:58.99ID:46uwwH/J0 たとえばlistにリスト型宣言時に想定されていた要素型の部分型のオブジェクトを要素として入れたりすると、listは共変じゃないから型の互換性がないぞって警告が出たりするけど、そういうのにどこまで対応するのがいいのかってのがよく分からない。castして黙らせるのがいいのか、そういうものだと放置しておくのがいいのか。どちらにせよ、型ヒントを書かないコードと比べて可読性の低下に見合うメリットがあるのか。
基本的には型付けしていく方向性の方が良いんだろうなと思っているけど、今一つ自分のスタンスが固まり切らない感じ。
基本的には型付けしていく方向性の方が良いんだろうなと思っているけど、今一つ自分のスタンスが固まり切らない感じ。
707デフォルトの名無しさん (ワッチョイ 0754-mJPu)
2025/08/12(火) 10:10:27.36ID:lkNbq5IJ0 型は決めずにいろいろ受け付けて、
想定外のが来ても意外とちゃんと動く、みたいなのがオブジェクト指向
想定外のが来ても意外とちゃんと動く、みたいなのがオブジェクト指向
708デフォルトの名無しさん (ワッチョイ f6c1-1ngM)
2025/08/12(火) 10:18:49.37ID:46uwwH/J0 705と707は、方向性としては正反対なのでは。707はいわゆるダックタイピングのことだと思うけど、オブジェクト指向は静的型付けとも両立するよね。
709デフォルトの名無しさん (ワッチョイ 0754-mJPu)
2025/08/12(火) 10:23:41.12ID:lkNbq5IJ0 型を混同するとバグる箇所と、
意図的に型を限定しない箇所がある
混同に該当するようなことをしても、柔軟に書かれてて期待通りに動いたりもする
厳密に追えば正しく動く理由は説明できるけど、
全部隠蔽して直感的に読めるコードだけが残る
意図的に型を限定しない箇所がある
混同に該当するようなことをしても、柔軟に書かれてて期待通りに動いたりもする
厳密に追えば正しく動く理由は説明できるけど、
全部隠蔽して直感的に読めるコードだけが残る
710デフォルトの名無しさん (ワッチョイ 5b2a-ycC0)
2025/08/12(火) 10:36:41.15ID:JQsdcePx0711デフォルトの名無しさん (ワッチョイ f6c1-1ngM)
2025/08/12(火) 10:36:56.04ID:46uwwH/J0 静的型チェッカーは、onにすると基本的には全コードについて型チェックをするものだと思っていたけど、そこは型チェッカーの設定次第で調整できるのかな。あとはAny……。
712デフォルトの名無しさん (ワッチョイ 2398-a/Iv)
2025/08/12(火) 10:46:31.63ID:Gkg/fED60 typescriptみたいに型システムを追加したPythonのスーパーセット作ればいいんだよ
713デフォルトの名無しさん (ワッチョイ de01-/C6k)
2025/08/12(火) 10:54:42.31ID:ANRO+El50714デフォルトの名無しさん (ワッチョイ 0754-mJPu)
2025/08/12(火) 11:00:43.17ID:lkNbq5IJ0 人間の管理能力は限界があるので、
人間側が間違わずに作るんじゃなくて、
最低限のことしか考えなくても安全に動作する方向に進化している
全員でそれをやると進まないので、
一部の頭いい人だけC言語でかっちり作る両輪体制
人間側が間違わずに作るんじゃなくて、
最低限のことしか考えなくても安全に動作する方向に進化している
全員でそれをやると進まないので、
一部の頭いい人だけC言語でかっちり作る両輪体制
715デフォルトの名無しさん (ワッチョイ f6c1-1ngM)
2025/08/12(火) 11:10:42.61ID:46uwwH/J0 >>713
ProtocolについてはロバストPytnonに出てきたのをちょっと読んだくらいしか知識がないのだけど、こういうときに使えるものなのかな。: list[base] という型指定はライブラリの中でされていて書き換えるのは躊躇されるので、そうだとするとちょっと難しいのかなと。
ProtocolについてはロバストPytnonに出てきたのをちょっと読んだくらいしか知識がないのだけど、こういうときに使えるものなのかな。: list[base] という型指定はライブラリの中でされていて書き換えるのは躊躇されるので、そうだとするとちょっと難しいのかなと。
716デフォルトの名無しさん (ワッチョイ cb01-/C6k)
2025/08/12(火) 13:23:41.67ID:AyHSyTNk0 >>715
それはライブラリ側の型ヒントが間違ってるか
自分が入れようとしている要素の型が間違ってるか
どちらかじゃないの?
ライブラリ側の型ヒントが間違ってると確定できてないうちは
自分が間違ってる前提で対応したほうがいいように思う
それはライブラリ側の型ヒントが間違ってるか
自分が入れようとしている要素の型が間違ってるか
どちらかじゃないの?
ライブラリ側の型ヒントが間違ってると確定できてないうちは
自分が間違ってる前提で対応したほうがいいように思う
717デフォルトの名無しさん (ワッチョイ f641-1ngM)
2025/08/12(火) 14:21:56.81ID:46uwwH/J0 GUIライブラリのwidgetコンテナで、格納される具体的なwidget群を属性widgeds : list[widget] に受け取るみたいな感じなんだよね。
container.widgets = [ label(), button(), textbox(), …… ] (label, button, textbox等は全てwidgetの部分型)みたいな感じで配置するんだけど、そこで706みたいな警告が出たり出なかったりする。
ありがちな状況なので、たぶん定石的な対処方法があるんじゃないかと思うんだけど。
container.widgets = [ label(), button(), textbox(), …… ] (label, button, textbox等は全てwidgetの部分型)みたいな感じで配置するんだけど、そこで706みたいな警告が出たり出なかったりする。
ありがちな状況なので、たぶん定石的な対処方法があるんじゃないかと思うんだけど。
718デフォルトの名無しさん (ワッチョイ df01-/C6k)
2025/08/12(火) 15:24:09.75ID:PiEjVoIs0 >>717
list[widget]の型にwidgetのサブクラスのインスタンスを入れてもエラーにはならないはず
list[widget]の型が要求されている箇所にlist[label]型の変数を渡してるとかなのでは?
list[widget]の型にwidgetのサブクラスのインスタンスを入れてもエラーにはならないはず
list[widget]の型が要求されている箇所にlist[label]型の変数を渡してるとかなのでは?
719デフォルトの名無しさん (ワッチョイ f641-1ngM)
2025/08/12(火) 15:45:42.19ID:46uwwH/J0 Pytnonの型チェックはあくまでもヒントだからエラーというか警告だけどね。自分も比較的最近知ったことだから勘違いがあるかもしれないけれど、listはmutableコンテナだから共変ではないんだって。だから、A <: B(Bが上位型でAはその部分型)のときでもlist[A] <: list[B] にはならないらしいよ。
720デフォルトの名無しさん (ワッチョイ f641-1ngM)
2025/08/12(火) 16:10:13.74ID:46uwwH/J0 たしかにlistの要素として、その型宣言時の要素型のサブクラスのインスタンスを入れるだけなら特に問題ないはずだとは自分も思うんだよね。
717のcontainer.widgets = [ label(), button(), textbox(), …… ] は、両辺の式の型の間に互換性がない(listは非変なので)点に問題があるということだとすると、container.widget.extend( …… ) とかの書き方にしたら大丈夫なんだろうか。ライブラリのリファレンスとかにはそういう書き方は出てこなかったけど。
717のcontainer.widgets = [ label(), button(), textbox(), …… ] は、両辺の式の型の間に互換性がない(listは非変なので)点に問題があるということだとすると、container.widget.extend( …… ) とかの書き方にしたら大丈夫なんだろうか。ライブラリのリファレンスとかにはそういう書き方は出てこなかったけど。
721デフォルトの名無しさん (ワッチョイ df01-/C6k)
2025/08/12(火) 16:18:25.12ID:PiEjVoIs0 >>719
型チェッカーがエラーと報告するならエラーでいいよ
listが共変でないというのは要素型のサブクラスはlistに入れられない話ではない
これはNG
mylist: list[label] = [label]
widgets = mylist
これはOK
widgets = [label]
これもOK
widgets = [label, button, textbox]
型チェッカーがエラーと報告するならエラーでいいよ
listが共変でないというのは要素型のサブクラスはlistに入れられない話ではない
これはNG
mylist: list[label] = [label]
widgets = mylist
これはOK
widgets = [label]
これもOK
widgets = [label, button, textbox]
722デフォルトの名無しさん (ワッチョイ df01-/C6k)
2025/08/12(火) 16:34:38.20ID:PiEjVoIs0 OKなはずなのにエラーが出てるのなら最小限の再現コードをpyrightのplaygroundにでも上げてもらったほうがいいかもね
723デフォルトの名無しさん (ワッチョイ f641-1ngM)
2025/08/12(火) 16:57:06.52ID:46uwwH/J0 なるほど、たしかにそれだと警告は出ないね。短い再現コードが出せるようならやってみるけどちょっと難しそうかな。たぶん代入文の右辺について、型チェッカーが(list[widget]と互換性のない)型情報をコード内の別のところから得ちゃっているということなんだろうと思うけど。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【工作員】「X」のアカウント所在地公開機能が暴いた世論操作の実態 MAGA支持著名アカウントの多くが米国外から運営 日本にも波及 ★2 [ごまカンパチ★]
- 【大阪】日本一高い観覧車が落雷で緊急停止 約20人乗客が閉じ込められ9時間にわたり救助活動 [七波羅探題★]
- 【・(ェ)・】「くまちゃんがいた」散歩中の2歳園児が発見 クリ林に1頭のクマ…保育士「ワンちゃんだね…」と声かけて移動 [Ailuropoda melanoleuca★]
- 【大阪】「もっとこっち来てよ」女子高校生を電車内に連れ込み 小学校教諭再逮捕「話をしたかっただけ [七波羅探題★]
- ラピダス、第2工場建設でも見えぬ顧客 技術開発も難題山積 [蚤の市★]
- 自民 国会議員の歳費 月額5万円引き上げ 今国会での成立目指す [どどん★]
- 🖐( -᷄ὢ)これから>>2の>>3なんで……
- 小田原城行ってみようかな
- 【悲報】日本の田舎、もう住める場所じゃないと話題に
- 足るを知るっていう考えは素晴らしいと思うけど、やっぱり生きてる以上
- えっ?肉離れって菜食主義の事じゃないの?俺ずっと
- 30才がJK好きなのってロリコン?
