Pythonのお勉強 Part75 (795レス)
Pythonのお勉強 Part75 http://mevius.5ch.net/test/read.cgi/tech/1743698824/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
1: デフォルトの名無しさん (ワッチョイ 33d8-PysV) [sage] 2025/04/04(金) 01:47:04.18 ID:UMpXJcmx0 !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 http://mevius.5ch.net/test/read.cgi/tech/1743698824/1
669: デフォルトの名無しさん (ワッチョイ 1af2-ZDX3) [sage] 2025/08/10(日) 14:04:35.99 ID:WyYSCohm0 >>666 t = (x, y) u = t これは、荷札xの付いた実体に対して荷札t[0]を、荷札yの実体に対して同様に荷札t[1]を貼り付ける、 同時に、荷札t[0]とt[1]を管理するために”t[0], t[1]”と書かれた台帳を作成し、その台帳に荷札uを付けると解釈すればよい これは参照の向きを逆に捉えて参照される側が参照元を記憶していると考えているだけなので、基本的にはこのような説明で矛盾は生じない 荷札名から実体を探すのが大変だという問題は残るけどね http://mevius.5ch.net/test/read.cgi/tech/1743698824/669
670: デフォルトの名無しさん (ワッチョイ f6ce-1ngM) [sage] 2025/08/10(日) 14:29:10.70 ID:wmWYPlFf0 仮にそれをそのまま実装に反映させるなら、Pytnonオブジェクトに(被参照カウント数に加えて)参照元のリストも持たせるってことでしょ。 そうではなく、単に解釈モデルに過ぎないってことなら、内部実装がそうなっているわけでもないのに、あえてそんな不自然な解釈モデルを作ってまで荷札(ラベル・名札)のアナロジーに拘る意味ってあるのかな? たとえばそれで、(666でちょっと触れた)tupleの要素であるlistの要素を変更してもtupleのimmutabilityに反しないことの説明がしやすくなったりする? http://mevius.5ch.net/test/read.cgi/tech/1743698824/670
671: デフォルトの名無しさん (ワッチョイ 7601-AJBo) [sage] 2025/08/10(日) 15:10:39.92 ID: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」なら←は代入ですと言ってもしっくりくるのかな? http://mevius.5ch.net/test/read.cgi/tech/1743698824/671
672: デフォルトの名無しさん (ワッチョイ 7a0a-WVpU) [] 2025/08/10(日) 15:49:18.97 ID:swuUdv2c0 >>671 だから:=にしているプログラミング言語もある 私は「代入」という言葉を否定している人間だ。 「代入」は数学の記法の見た目と同じだから出てきた言い回しにすぎない。 仕事では「設定」などと呼ぶ。英語でもsetと呼んでいる。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/672
673: デフォルトの名無しさん (ワッチョイ 7601-AJBo) [sage] 2025/08/10(日) 15:53:58.39 ID:BWOE9N0b0 >>666 >652に対する批判の文脈でどういう意味合いを持たせたかったのかはよく分からないな >>648に書いてるのと同じなんだけど箱を箱のまま入れ物として取り扱う状況と箱を箱の中身が示す値として取り扱う状況の説明なくそれらを無意識に使い分けながら「一貫した説明ができる」と言ってるのを自覚して欲しかったとでも言えばいいだろうか http://mevius.5ch.net/test/read.cgi/tech/1743698824/673
674: デフォルトの名無しさん (ワッチョイ 0754-mJPu) [sage] 2025/08/10(日) 15:57:29.66 ID:rGiN2SBN0 代入という訳語の気が利きすぎてるんだよな assignのニュアンスそのままなら代入は出てこない 単に関連付けをしてるだけ 代わりに入れるという何か動きを持った訳語にしたせいで、逆に理解を阻害する http://mevius.5ch.net/test/read.cgi/tech/1743698824/674
675: デフォルトの名無しさん (ベーイモ MM06-ZDX3) [sage] 2025/08/10(日) 16:00:48.44 ID:VcYsNhlgM >>672 setには、ある既存の構造を正しく整った状態へと変えるというニュアンスがある 単なる変数の代入は変数の中身をまるっと置き換えているだけで既存の構造を変化させているわけではないし、 新しい値もそれが正しく整ったものとは限らず、ごく一時的なものだったりする なのでより直接的なassignが用いられる http://mevius.5ch.net/test/read.cgi/tech/1743698824/675
676: デフォルトの名無しさん (ワッチョイ 7a0a-WVpU) [] 2025/08/10(日) 16:14:57.79 ID:swuUdv2c0 >>675 Pythonの話なら私は知らない。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/676
677: デフォルトの名無しさん (ワッチョイ f64c-1ngM) [sage] 2025/08/10(日) 16:46:12.05 ID:wmWYPlFf0 Pytnonの言語仕様として「代入文」という名称で規定されているんだから、ひとまずこのスレで「代入」と呼ぶことには何の問題もないと思うけどね。それが数学における代入概念とは意味が違うから別の呼び方をすべきだというのは1つの意見としては傾聴に値すると思うけど、それはまた別の話でしょ。 >>673 それは661でコンテキスト(状況)として挙げられた要素に対応する違いであるか甚だ疑問だし、そもそも「箱を箱の中身が示す値として取り扱う」というようなふわっとした理解だから混乱するのでは。 大前提として、①名前と②名前が束縛されるメモリ領域(=箱)とは区別される概念だけどこれはいい? それから、②名前が束縛されるメモリ領域(=箱)と③そこに格納されている実体(オブジェクト・値)も区別される概念だけどこっちはいいよね。たぶん、①②の区別が曖昧だから「箱を箱の中身が示す値として取り扱う」というような表現が出てくるんだと思うけど。 注意すべきは「変数」という用語の多義性で、この語は上記①〜③のいずれを指すか曖昧なまま使われがち。かつそういう曖昧な認識のまま「変数=箱」という説明がされがちなので混乱が起きるんだと思うけどね。なお、そういう観点からいうと、646の「箱=値」という表記の仕方も(直感的にはわかりやすいけれども)こういう曖昧な理解を助長する弊害はあるんだろう。 上記のような概念的な区別がきちんとできている限り、コンテキスト(状況)如何で変わるような話ではないということは理解しやすいと思うけどどうかな(あるいは、必要なのは概念的な区別であって、コンテキスト(状況)の場合分けではないという言い方をしても良い)。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/677
678: デフォルトの名無しさん (ワッチョイ 7a0a-WVpU) [] 2025/08/10(日) 17:03:01.76 ID:swuUdv2c0 箱は伝統的なプログラミング入門書が使うわかりにくい例えだしな それより丸数字の使用が気になるぞ http://mevius.5ch.net/test/read.cgi/tech/1743698824/678
679: デフォルトの名無しさん (ワッチョイ 7a0a-WVpU) [] 2025/08/10(日) 17:11:26.30 ID:swuUdv2c0 ドキュメンテーションのない仕事をしているのがはっきりとわかるよなあ http://mevius.5ch.net/test/read.cgi/tech/1743698824/679
680: デフォルトの名無しさん (ワッチョイ f64c-1ngM) [sage] 2025/08/10(日) 17:15:06.72 ID:wmWYPlFf0 メモリ領域を箱に例えるのはコンピューターのアーキテクチャーに忠実な良い例えだと思うけどね。Pytnonみたいな言語ではC言語レベルに還元しないと正確な理解に到達できないという憾みはあるが、それでもラベル(名札・荷札)のアナロジーのような曖昧なイメージに頼るよりよほど良いと思うよ。 ところで、丸数字って今でも読みづらく化けたりする? 5chみたいなところで使う分には、もう、そんなに気にしなくても良い時代かなと思っていたんだが。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/680
681: デフォルトの名無しさん (ワッチョイ 0754-mJPu) [sage] 2025/08/10(日) 17:20:18.25 ID:rGiN2SBN0 一番気になるのは改行しないことだな http://mevius.5ch.net/test/read.cgi/tech/1743698824/681
682: デフォルトの名無しさん (ワッチョイ 7601-AJBo) [sage] 2025/08/10(日) 18:04:10.77 ID:BWOE9N0b0 >>677 >>652から引用すると「y = x は(C言語レベルでは)名前(変数)yが束縛されているメモリ領域(646風にいえばyという箱)にオブジェクト"foo"のアドレス情報を入れるという形で処理されることになる。」 ここでは何の説明もなくxが「オブジェクトfoo"のアドレス情報」に変換されてるよね? 同じxでも直前の`x=“foo”`のxは箱のまま入れ物として取り扱われていたが `y = x`のxは箱の中身が指し示す値として取り扱われている その違いを生むのがxが評価されるコンテキストの違い http://mevius.5ch.net/test/read.cgi/tech/1743698824/682
683: デフォルトの名無しさん (ワッチョイ 7a0a-WVpU) [] 2025/08/10(日) 18:34:46.42 ID:swuUdv2c0 アセンブラのニーモニックが辞書を片手に見るか、覚えていないといけないのをわかりやすく表現しただけのものをマシン語の並び順すら知らずにこねくり回した説明をしているのは滑稽 http://mevius.5ch.net/test/read.cgi/tech/1743698824/683
684: デフォルトの名無しさん (ワッチョイ 7a0a-WVpU) [] 2025/08/10(日) 18:45:58.86 ID:swuUdv2c0 >>682 CPUのレジスタがメモリのような連続した長いものでないため、コンピューターではレジスタで収まるものとそうでないものの区別がある。 コンピューターそのものがCPUとメモリという別のものを組み合わせているから、メモリへの参照なのかどうかは曖昧にしたまま進化しただけ。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/684
685: デフォルトの名無しさん (ワッチョイ f64c-1ngM) [sage] 2025/08/10(日) 19:11:26.73 ID:wmWYPlFf0 >>682 何の説明もなくって、代入文の右辺の式が評価されるのは代入文の言語仕様そのままでしょ。何か不明確な点ってある? 代入文の左辺か右辺かの違いもコンテキスト(状況)の違いであって、そのいずれであるかによって言語処理系による名前(変数)の扱いが異なるという趣旨のことを主張したいのなら別に積極的に異論をとなえるつもりもないけれども、それについて、Pytnonの言語リファレンス等で明らかになっていることに付け加えて何か説明しなきゃいけないことってあるかな? 「箱自体を値として使う場合」(648)とか「箱を箱の中身が示す値として使う状況」(673)というのは概念上の区別が不十分であることに基づく不正確な表現・理解だと思うけど、その点が正された後になお何か理解できない点があるの? http://mevius.5ch.net/test/read.cgi/tech/1743698824/685
686: デフォルトの名無しさん (ワッチョイ 3e5f-ZDX3) [sage] 2025/08/10(日) 19:30:23.90 ID:EbzyEcBr0 2のオブジェクトがあって x=2だとxは2のオブジェクトを参照? オブジェクトどんだけ先に用意すんの? http://mevius.5ch.net/test/read.cgi/tech/1743698824/686
687: デフォルトの名無しさん (ワッチョイ 7a0a-WVpU) [] 2025/08/10(日) 19:32:17.91 ID:swuUdv2c0 >>686 コードに2と書いてある時点で、2もメモリ上に存在しているんだよ? http://mevius.5ch.net/test/read.cgi/tech/1743698824/687
688: デフォルトの名無しさん (ワッチョイ 7a0a-WVpU) [] 2025/08/10(日) 19:32:51.39 ID:swuUdv2c0 >>685 はただの老害 http://mevius.5ch.net/test/read.cgi/tech/1743698824/688
689: デフォルトの名無しさん (ワッチョイ f64c-1ngM) [sage] 2025/08/10(日) 19:35:35.63 ID:wmWYPlFf0 2がオブジェクトであることは print( id( 2 ) ) とかしてみれば分かる。 よく使う整数はあらかじめ生成しているんじゃなかったっけ。どの範囲かは以前このスレで見たような気がするが忘れちゃった。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/689
690: デフォルトの名無しさん (ワッチョイ 0754-mJPu) [sage] 2025/08/10(日) 19:36:05.96 ID:rGiN2SBN0 数値もオブジェクトと知った時点でその疑問に行き当たるよな 文字列がオブジェクトなのは、文字列自体が格納されたアドレスだから普通に判る 数値は整数どころか浮動小数点数でもオブジェクトで、事前に用意したら無限に要る 単にオブジェクトは必ずしもアドレスじゃなくて、数値をbit表記したものが渡されるだけ http://mevius.5ch.net/test/read.cgi/tech/1743698824/690
691: デフォルトの名無しさん (ワッチョイ f64c-1ngM) [sage] 2025/08/10(日) 19:48:29.35 ID:wmWYPlFf0 RubyとかJavaScriptと違ってPytnonは即値を使わず全部PyObjectじゃなかったっけ? 正直、記憶が曖昧なので自信はないが。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/691
692: デフォルトの名無しさん (ワッチョイ 1a79-MCtg) [sage] 2025/08/10(日) 20:18:34.90 ID:WEeWhG2x0 このあたりの話かな https://docs.python.org/ja/3/c-api/long.html PyObject *PyLong_FromLong(long v) 戻り値: 新しい参照。 次に属します: Stable ABI. v から新たな PyLongObject オブジェクトを生成して返します。失敗のときには NULL を返します。 現在の実装では、-5 から 256 までの全ての整数に対する整数オブジェクトの配列を保持します。この範囲の数を生成すると、実際には既存のオブジェクトに対する参照が返るようになっています。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/692
693: デフォルトの名無しさん (ワッチョイ 7a0a-WVpU) [] 2025/08/10(日) 21:54:22.66 ID:swuUdv2c0 Pythonは後になって「オブジェクト」という用語を使い始めた誤魔化し集団。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/693
694: デフォルトの名無しさん (ワッチョイ de01-AJBo) [sage] 2025/08/10(日) 23:13:13.88 ID:ZpaHmpjx0 >>685 言語仕様はおろかプログラミングにおける代入を理解してないような初心者に対して代入文とはどういうものか説明しようとして「箱 = 値」というアナロジーを使ってるんでしょ? なのに説明できてない箇所を指摘すると「それは言語仕様を知ってればわかるからいいよね?文句ある?」みたいな開き直りをされても失笑するしかないよ http://mevius.5ch.net/test/read.cgi/tech/1743698824/694
695: デフォルトの名無しさん (ワッチョイ 232c-1ngM) [sage] 2025/08/10(日) 23:31:54.49 ID:wxvmtlzV0 >>694 646は、「言語仕様はおろかプログラミングにおける代入を理解してないような初心者に対して代入文とはどういうものか説明しようとして「箱 = 値」というアナロジーを使ってる」のかもしれないが、自分はそんなつもりは全くないな。652や656で書いたような説明をそんな初心者が理解できるわけないでしょ。Pytnonのような言語の代入文をきちんと理解するにはそれなりに前提知識がいる。それが大変だから、ラベル(名札・荷札)のアナロジーのような、そこそこ良い線はいっているけれども本質的な理解からは隔たりがある説明が蔓延しているわけで。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/695
696: デフォルトの名無しさん (ワッチョイ 174f-Fa+d) [] 2025/08/11(月) 10:30:52.65 ID:hg5eV/6v0 CPUはレジスタに根渡ししてるだけなのにな 高級言語は余計なことやりすぎなんだよ http://mevius.5ch.net/test/read.cgi/tech/1743698824/696
697: デフォルトの名無しさん (ワッチョイ 9a02-QbuV) [sage] 2025/08/11(月) 12:14:18.55 ID:oIjo7VRO0 AIを作ってるが、 Pythonは型が明記されてないから、わかりずらいな… C++のほうが見やすい http://mevius.5ch.net/test/read.cgi/tech/1743698824/697
698: デフォルトの名無しさん (ワッチョイ b680-kDJb) [] 2025/08/11(月) 12:23:50.21 ID:M47h2EOs0 正直俺もどうにかC++に持ってこれないか無駄な努力してる whisperとかはありがたい設計なんだけど翻訳系がなー boost::pythonもcythonも結構Cじゃ完結しないのね http://mevius.5ch.net/test/read.cgi/tech/1743698824/698
699: デフォルトの名無しさん (ワッチョイ 5a4e-a/Iv) [] 2025/08/11(月) 14:33:28.70 ID:uBk9CY7Y0 C++なら値なのか参照なのかポインタなのか一目で分かるからな 上の議論もc++なら一発で解決する http://mevius.5ch.net/test/read.cgi/tech/1743698824/699
700: デフォルトの名無しさん (ワッチョイ 0754-mJPu) [sage] 2025/08/11(月) 14:38:05.58 ID:Xx9EOjxc0 deepcopy必須な再帰呼び出しをリファクタリングしてたらすっきり書けすぎて、 deepcopy部分が暗黙になってしまって逆に危険に http://mevius.5ch.net/test/read.cgi/tech/1743698824/700
701: デフォルトの名無しさん (ワッチョイ 3e3e-ZDX3) [sage] 2025/08/12(火) 04:07:24.02 ID:nMX81I590 >>687 そうなんだけどさ 整数いくつ準備してんの あらかじめ http://mevius.5ch.net/test/read.cgi/tech/1743698824/701
702: デフォルトの名無しさん (ワッチョイ 4e10-1ngM) [sage] 2025/08/12(火) 08:04:19.47 ID:i9fPXIIb0 >>701 >>692 http://mevius.5ch.net/test/read.cgi/tech/1743698824/702
703: デフォルトの名無しさん (ワッチョイ df7c-J6sU) [] 2025/08/12(火) 09:10:49.53 ID:rnDCu4n50 >>697 型ヒントぐらい使え http://mevius.5ch.net/test/read.cgi/tech/1743698824/703
704: デフォルトの名無しさん (ワッチョイ 230f-1ngM) [sage] 2025/08/12(火) 09:28:38.40 ID:ob7DnR/R0 typingもバージョンアップのたびに機能が追加されるけれど、正直、フォローできているのは4分の1もないくらいかな。ある程度プラクティスが固まって本でも出たらそれに従うつもりではいるけれど、TypeGuardとかParamSpecとかを自分のコードで使うことはなさそう。 ヌル安全関係の演算子とかは、自分でも何とか理解できそうなので追加が可能なら欲しいかも。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/704
705: デフォルトの名無しさん (ワッチョイ 0754-mJPu) [sage] 2025/08/12(火) 09:32:25.25 ID:lkNbq5IJ0 全部書いて自動チェック機能も常用しないと意味がない 必要なとこだけコメントで十分 http://mevius.5ch.net/test/read.cgi/tech/1743698824/705
706: デフォルトの名無しさん (ワッチョイ f6c1-1ngM) [sage] 2025/08/12(火) 09:59:58.99 ID:46uwwH/J0 たとえばlistにリスト型宣言時に想定されていた要素型の部分型のオブジェクトを要素として入れたりすると、listは共変じゃないから型の互換性がないぞって警告が出たりするけど、そういうのにどこまで対応するのがいいのかってのがよく分からない。castして黙らせるのがいいのか、そういうものだと放置しておくのがいいのか。どちらにせよ、型ヒントを書かないコードと比べて可読性の低下に見合うメリットがあるのか。 基本的には型付けしていく方向性の方が良いんだろうなと思っているけど、今一つ自分のスタンスが固まり切らない感じ。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/706
707: デフォルトの名無しさん (ワッチョイ 0754-mJPu) [sage] 2025/08/12(火) 10:10:27.36 ID:lkNbq5IJ0 型は決めずにいろいろ受け付けて、 想定外のが来ても意外とちゃんと動く、みたいなのがオブジェクト指向 http://mevius.5ch.net/test/read.cgi/tech/1743698824/707
708: デフォルトの名無しさん (ワッチョイ f6c1-1ngM) [sage] 2025/08/12(火) 10:18:49.37 ID:46uwwH/J0 705と707は、方向性としては正反対なのでは。707はいわゆるダックタイピングのことだと思うけど、オブジェクト指向は静的型付けとも両立するよね。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/708
709: デフォルトの名無しさん (ワッチョイ 0754-mJPu) [sage] 2025/08/12(火) 10:23:41.12 ID:lkNbq5IJ0 型を混同するとバグる箇所と、 意図的に型を限定しない箇所がある 混同に該当するようなことをしても、柔軟に書かれてて期待通りに動いたりもする 厳密に追えば正しく動く理由は説明できるけど、 全部隠蔽して直感的に読めるコードだけが残る http://mevius.5ch.net/test/read.cgi/tech/1743698824/709
710: デフォルトの名無しさん (ワッチョイ 5b2a-ycC0) [] 2025/08/12(火) 10:36:41.15 ID:JQsdcePx0 >>707 なんか古めかしいよね。 型は決めずに void 型ポインタとしていろいろ受け付けるみたいな。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/710
711: デフォルトの名無しさん (ワッチョイ f6c1-1ngM) [sage] 2025/08/12(火) 10:36:56.04 ID:46uwwH/J0 静的型チェッカーは、onにすると基本的には全コードについて型チェックをするものだと思っていたけど、そこは型チェッカーの設定次第で調整できるのかな。あとはAny……。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/711
712: デフォルトの名無しさん (ワッチョイ 2398-a/Iv) [] 2025/08/12(火) 10:46:31.63 ID:Gkg/fED60 typescriptみたいに型システムを追加したPythonのスーパーセット作ればいいんだよ http://mevius.5ch.net/test/read.cgi/tech/1743698824/712
713: デフォルトの名無しさん (ワッチョイ de01-/C6k) [sage] 2025/08/12(火) 10:54:42.31 ID:ANRO+El50 >>706 Protocol使う場面では? structual typingでよければだけど http://mevius.5ch.net/test/read.cgi/tech/1743698824/713
714: デフォルトの名無しさん (ワッチョイ 0754-mJPu) [sage] 2025/08/12(火) 11:00:43.17 ID:lkNbq5IJ0 人間の管理能力は限界があるので、 人間側が間違わずに作るんじゃなくて、 最低限のことしか考えなくても安全に動作する方向に進化している 全員でそれをやると進まないので、 一部の頭いい人だけC言語でかっちり作る両輪体制 http://mevius.5ch.net/test/read.cgi/tech/1743698824/714
715: デフォルトの名無しさん (ワッチョイ f6c1-1ngM) [sage] 2025/08/12(火) 11:10:42.61 ID:46uwwH/J0 >>713 ProtocolについてはロバストPytnonに出てきたのをちょっと読んだくらいしか知識がないのだけど、こういうときに使えるものなのかな。: list[base] という型指定はライブラリの中でされていて書き換えるのは躊躇されるので、そうだとするとちょっと難しいのかなと。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/715
716: デフォルトの名無しさん (ワッチョイ cb01-/C6k) [sage] 2025/08/12(火) 13:23:41.67 ID:AyHSyTNk0 >>715 それはライブラリ側の型ヒントが間違ってるか 自分が入れようとしている要素の型が間違ってるか どちらかじゃないの? ライブラリ側の型ヒントが間違ってると確定できてないうちは 自分が間違ってる前提で対応したほうがいいように思う http://mevius.5ch.net/test/read.cgi/tech/1743698824/716
717: デフォルトの名無しさん (ワッチョイ f641-1ngM) [sage] 2025/08/12(火) 14:21:56.81 ID:46uwwH/J0 GUIライブラリのwidgetコンテナで、格納される具体的なwidget群を属性widgeds : list[widget] に受け取るみたいな感じなんだよね。 container.widgets = [ label(), button(), textbox(), …… ] (label, button, textbox等は全てwidgetの部分型)みたいな感じで配置するんだけど、そこで706みたいな警告が出たり出なかったりする。 ありがちな状況なので、たぶん定石的な対処方法があるんじゃないかと思うんだけど。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/717
718: デフォルトの名無しさん (ワッチョイ df01-/C6k) [sage] 2025/08/12(火) 15:24:09.75 ID:PiEjVoIs0 >>717 list[widget]の型にwidgetのサブクラスのインスタンスを入れてもエラーにはならないはず list[widget]の型が要求されている箇所にlist[label]型の変数を渡してるとかなのでは? http://mevius.5ch.net/test/read.cgi/tech/1743698824/718
719: デフォルトの名無しさん (ワッチョイ f641-1ngM) [sage] 2025/08/12(火) 15:45:42.19 ID:46uwwH/J0 Pytnonの型チェックはあくまでもヒントだからエラーというか警告だけどね。自分も比較的最近知ったことだから勘違いがあるかもしれないけれど、listはmutableコンテナだから共変ではないんだって。だから、A <: B(Bが上位型でAはその部分型)のときでもlist[A] <: list[B] にはならないらしいよ。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/719
720: デフォルトの名無しさん (ワッチョイ f641-1ngM) [sage] 2025/08/12(火) 16:10:13.74 ID:46uwwH/J0 たしかにlistの要素として、その型宣言時の要素型のサブクラスのインスタンスを入れるだけなら特に問題ないはずだとは自分も思うんだよね。 717のcontainer.widgets = [ label(), button(), textbox(), …… ] は、両辺の式の型の間に互換性がない(listは非変なので)点に問題があるということだとすると、container.widget.extend( …… ) とかの書き方にしたら大丈夫なんだろうか。ライブラリのリファレンスとかにはそういう書き方は出てこなかったけど。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/720
721: デフォルトの名無しさん (ワッチョイ df01-/C6k) [sage] 2025/08/12(火) 16:18:25.12 ID:PiEjVoIs0 >>719 型チェッカーがエラーと報告するならエラーでいいよ listが共変でないというのは要素型のサブクラスはlistに入れられない話ではない これはNG mylist: list[label] = [label] widgets = mylist これはOK widgets = [label] これもOK widgets = [label, button, textbox] http://mevius.5ch.net/test/read.cgi/tech/1743698824/721
722: デフォルトの名無しさん (ワッチョイ df01-/C6k) [sage] 2025/08/12(火) 16:34:38.20 ID:PiEjVoIs0 OKなはずなのにエラーが出てるのなら最小限の再現コードをpyrightのplaygroundにでも上げてもらったほうがいいかもね http://mevius.5ch.net/test/read.cgi/tech/1743698824/722
723: デフォルトの名無しさん (ワッチョイ f641-1ngM) [sage] 2025/08/12(火) 16:57:06.52 ID:46uwwH/J0 なるほど、たしかにそれだと警告は出ないね。短い再現コードが出せるようならやってみるけどちょっと難しそうかな。たぶん代入文の右辺について、型チェッカーが(list[widget]と互換性のない)型情報をコード内の別のところから得ちゃっているということなんだろうと思うけど。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/723
724: デフォルトの名無しさん (ワッチョイ 9a02-QbuV) [sage] 2025/08/12(火) 19:52:51.31 ID:CDoCkaEH0 >>723 型を明記しないとエラーとかってできる? VBAみたいに C++のほうが慣れてるから、そのほうがええわ http://mevius.5ch.net/test/read.cgi/tech/1743698824/724
725: デフォルトの名無しさん (ワッチョイ 4e10-1ngM) [sage] 2025/08/12(火) 21:31:27.14 ID:i9fPXIIb0 エラーにできるかというのが、静的型付けができていないコードの実行を自動的に抑止できるかという意味なら、Pytnon単体ではムリじゃない? あくまでも型「注釈」に過ぎないわけだし。でも、型チェッカーの方でそういう設定はあるんじゃないかなぁ。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/725
726: デフォルトの名無しさん (ワッチョイ cb01-X2XY) [sage] 2025/08/12(火) 22:31:56.05 ID:jU+JMCmR0 >>724 pyrightのstrict modeを試してみるといいと思う http://mevius.5ch.net/test/read.cgi/tech/1743698824/726
727: デフォルトの名無しさん (ベーイモ MM06-ZDX3) [sage] 2025/08/12(火) 22:41:38.16 ID:nRaft4INM Pythonの型ヒントって型推論が許されてるけどどこまでそれが効くかはチェッカーの実装依存なんだよね つまりチェッカーからすると型が不明というのは多くの場合において自身の型推論がショボいことを意味するわけで、 不明だからエラーにするというのは筋が通らないわけよ せいぜい引数と戻り値に方指定を必須にするくらいだね http://mevius.5ch.net/test/read.cgi/tech/1743698824/727
728: デフォルトの名無しさん (ワッチョイ 7602-7soU) [sage] 2025/08/12(火) 23:05:23.88 ID:DyWlhw4u0 実行時まで型が決まらん、というのまであるしなあ http://mevius.5ch.net/test/read.cgi/tech/1743698824/728
729: デフォルトの名無しさん (ワッチョイ 8a9f-XAuV) [sage] 2025/08/12(火) 23:06:06.49 ID:6cjc6Wvo0 商用プログラム書くならパフォーマンス犠牲になってもランタイムの型チェックがほしい こんどしれっとtypeguardいれてみようかな AI支援もあるし猛烈に反対はされなそう http://mevius.5ch.net/test/read.cgi/tech/1743698824/729
730: デフォルトの名無しさん (ワッチョイ 9a02-QbuV) [sage] 2025/08/13(水) 06:35:34.74 ID:o5KTBnUB0 >>726 まあでも、 やっぱ、オレみたいなやっぱ要望はたくさんあるんだな 型を明記して欲しいって人 http://mevius.5ch.net/test/read.cgi/tech/1743698824/730
731: デフォルトの名無しさん (ワッチョイ 174e-ZDX3) [sage] 2025/08/13(水) 08:37:10.53 ID:+sjCYsF70 >>730 問題は>>727の通り、どこまで明記すれば不明でなくなるのかがPythonの仕様上不明であること 例えば x = f() において、fの戻り値がstrとして型指定されている場合、右辺の式 f() の型は何になるだろう? 左辺で宣言された変数xの型はどうか? どっちも当然strと思うかもしれないが、これ正確にはどちらも型推論が必要で、なんと型チェッカーの実装依存なんだよね x: str = typing.cast(str, f()) もし可能な限り明記しようとすればこうなるが、これでもなお実装依存でないとは言えない http://mevius.5ch.net/test/read.cgi/tech/1743698824/731
732: デフォルトの名無しさん (ワッチョイ 231f-1ngM) [sage] 2025/08/13(水) 09:44:46.84 ID:/jTyGuwU0 型付け・型検査の目的は型の不整合の有無を確認することだから、式の型が1つに確定できるならそれが最も分かりやすいとは思うけど、必ずしも1つに確定できなくても(たとえば式の型としてa型、b型、c型の3つの可能性があって、そのいずれについても)型の不整合が生じないことが確認できているのであれば、それで型付け・型検査としての役割は果たしているようにも思うけど。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/732
733: デフォルトの名無しさん (ワッチョイ 0754-mJPu) [sage] 2025/08/13(水) 09:48:15.23 ID:rfdqQR7l0 動的型付け言語を静的型付け言語のように取り扱うのが間違い 無管理よりは何かやれることあるだろうという模索の最中だけど、本質的に困難 http://mevius.5ch.net/test/read.cgi/tech/1743698824/733
734: デフォルトの名無しさん (ワッチョイ f63f-1ngM) [sage] 2025/08/13(水) 10:05:06.70 ID:IjqUTXVC0 もちろん、静的型付け言語と全面的に同じことができるわけではないけれども、部分的にではあれ良いところを真似することはできるし、邪魔くさいという人は従来どおりのスタイルで書くこともできる。型指定をアノテーションにとどめるというのはそんなに悪いアイデアではないと思うけどなー。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/734
735: デフォルトの名無しさん (アウアウウー Sac7-Kgix) [] 2025/08/13(水) 12:39:57.08 ID:U7zZSy+Fa PyhtonのListが型限定されたら嫌だな もちろんPyObjectとしては限定されてるが そういう意味じゃないんだ http://mevius.5ch.net/test/read.cgi/tech/1743698824/735
736: デフォルトの名無しさん (ワッチョイ 4ecf-vKG+) [sage] 2025/08/13(水) 14:26:42.51 ID:52kJFnMW0 >>727 ESLint だと明示的でない any を警告するオプションがあったりする。 型が不明という状況がその型推論がショボいことを意味したりはしないと思うがな。 ただ実用上の問題としては、型ヒントを提供していないモジュールが多いんで 警告が出まくる可能性があること。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/736
737: デフォルトの名無しさん (ワッチョイ 175f-eMCN) [sage] 2025/08/13(水) 16:15:18.85 ID:jrIykVeu0 自分はpylanceのbasicでちょうどいいくらいだわ http://mevius.5ch.net/test/read.cgi/tech/1743698824/737
738: デフォルトの名無しさん (ワッチョイ 3efe-bxVO) [] 2025/08/13(水) 17:18:57.17 ID:vtzVqfUP0 labelStudioのインストールについて質問してもいいですか? WindowsパソコンでlabelStudioの最新版をインストールしたのですがコマンドプロンプトでpipコードを入力してもファイルが見つかりませんとなってlabelStudioが起動出来ません。 わかる方いますか? http://mevius.5ch.net/test/read.cgi/tech/1743698824/738
739: デフォルトの名無しさん (ワッチョイ 23e7-XAuV) [sage] 2025/08/13(水) 18:47:31.75 ID:God64kkW0 >>738 https://labelstud.io/learn/getting-started-with-label-studio/ これでためしてみて Dockerなんて要らないとおもうかもしれないけど それならまずそんなところで躓かないくらいのオタクになる必要がある http://mevius.5ch.net/test/read.cgi/tech/1743698824/739
740: デフォルトの名無しさん (ワッチョイ 3efe-bxVO) [] 2025/08/13(水) 19:30:06.31 ID:vtzVqfUP0 >>739 Dockerとはなんぞや?なレベルなんてちんぷんかんぷんです。 ずぶの素人にはインストールすらむずいっす http://mevius.5ch.net/test/read.cgi/tech/1743698824/740
741: デフォルトの名無しさん (ワッチョイ dff2-ChRm) [] 2025/08/15(金) 00:02:17.57 ID:UemuT+6G0 pyxが出たよ …何するツール? https://astral.sh/pyx http://mevius.5ch.net/test/read.cgi/tech/1743698824/741
742: デフォルトの名無しさん (ワッチョイ 41f0-/HUD) [] 2025/08/19(火) 07:51:45.77 ID:fyqgDdBA0 配列でもdict使えば分かりやすいし変数名で何入るかだいたい分かるやろ pythonて組込みには使わないし型なんているんか🐼 http://mevius.5ch.net/test/read.cgi/tech/1743698824/742
743: デフォルトの名無しさん (ワッチョイ 5957-l4ws) [sage] 2025/08/19(火) 09:47:34.16 ID:ndmX+Emn0 ある程度規模が大きいプログラムでないと型のありがたみは分からないと一般的に言われているのでは。個人的には一応できるだけ型は付けるようにしているけど、可読性の低下に見合うメリットを実感できているかと言われると微妙なところかな。 typingも急速に複雑化したよねー http://mevius.5ch.net/test/read.cgi/tech/1743698824/743
744: デフォルトの名無しさん (ワッチョイ 6130-im2P) [] 2025/08/19(火) 11:31:08.50 ID:2nwbx/Cn0 型記述すると可読性が低下すると思っている人と 型記述しないと可読性が低下すると思っている人がいる http://mevius.5ch.net/test/read.cgi/tech/1743698824/744
745: デフォルトの名無しさん (ワッチョイ 4191-Qwzy) [sage] 2025/08/19(火) 11:53:03.68 ID:CS+/mYIY0 使わない理由は手間に見合うかどうかなんだとおもう コードのノイズになるってんならIDEに型ヒント部分を隠す拡張があればいい http://mevius.5ch.net/test/read.cgi/tech/1743698824/745
746: デフォルトの名無しさん (ワッチョイ dbc5-l4ws) [sage] 2025/08/19(火) 12:50:32.05 ID:AwWeWqwl0 型ヒントを一時的に隠す機能は、たしかにちょっと欲しいかも。というか、もうあるのかもしれないけど。 他人が書いたコードとか、自分が書いたコードでも内容をだいぶ忘れてしまったコードを読むときは型ヒントが大いに助けになるけど、ある程度内容を把握しているコードだと型ヒントがない方が読みやすいってことは結構あるだろうとは思う。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/746
747: デフォルトの名無しさん (ワッチョイ 214b-ZBQJ) [] 2025/08/19(火) 17:20:40.65 ID:EZlqtCJf0 型ヒントないとメソッドに飛べないでしょ 効率的にコーディングするために必要だよ型ヒントは http://mevius.5ch.net/test/read.cgi/tech/1743698824/747
748: デフォルトの名無しさん (ワッチョイ db07-l4ws) [sage] 2025/08/20(水) 14:50:38.31 ID:v4jtEgpO0 lambdaの本体に式しか含められないという制限は、どういう考慮からなんだっけ? 名前あり関数を定義すれば済む話なのでそこまで不便というわけではないのだけれど、lambdaの中にそのまま書けたほうが自然なのになと思うことはちょくちょくある。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/748
749: デフォルトの名無しさん (ブーイモ MMb3-y2EG) [] 2025/08/20(水) 16:32:51.46 ID:qKO8yNcaM >>748 フレームワークの概念がないのか? http://mevius.5ch.net/test/read.cgi/tech/1743698824/749
750: デフォルトの名無しさん (ワッチョイ f101-SMsS) [sage] 2025/08/20(水) 17:15:55.62 ID:V8h3cYb/0 >>748 式の中にステートメントを入れられないという大前提を覆すとなると影響が大きすぎるしそもそも思想に合わなかったからだと思う assignment expressionの導入を嫌がってたのにも通じる話 http://mevius.5ch.net/test/read.cgi/tech/1743698824/750
751: デフォルトの名無しさん (ワッチョイ dbda-l4ws) [sage] 2025/08/20(水) 19:37:21.46 ID:v4jtEgpO0 JavaScriptの関数定義式のイメージで、lambdaを式ではなく文にしたらどうかという前提で考えていたんだが、仮に文にするにしても「値を持つが式文ではない特殊な文」みたいなカテゴリを作るのは大変か。そうするとやむを得ないところかね。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/751
752: デフォルトの名無しさん (ワッチョイ 7954-A4gQ) [sage] 2025/08/20(水) 21:05:15.22 ID:z8I7zAVw0 羊のラムの綴りはlamb 一旦lambを書いてからdaを付けると間違わない http://mevius.5ch.net/test/read.cgi/tech/1743698824/752
753: デフォルトの名無しさん (オイコラミネオ MMa5-1GGU) [] 2025/08/20(水) 22:25:29.24 ID:WlXb3anFM >>737 それでもウザいかな。nodeを自分でインストールする必要ないということで、basedpyrightを使ってみたけど、デフォルトのあまりにうるささに即削除した。 uvとかruffだっけ?のチームが最近始めたやつに少し期待している。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/753
754: デフォルトの名無しさん (ワッチョイ 4b8a-Li9w) [Sage] 2025/08/20(水) 22:32:03.53 ID:ABvMeeh/0 AIをゴリゴリ使って基幹ソフトをRPAとPythonで便利にする仕組みを社内投稿したら、会社でバズってなんかすごいスキルとか言われて困ってる 制作したことに偽りは無いけど、専門部署に呼ばれても知らんし(泣)そもそも制作のモチベーションは現場にあるから専門部署に行ってもしょうがない 現場のおじさんでも作れる時代になった事がエポックメイクな事なのに http://mevius.5ch.net/test/read.cgi/tech/1743698824/754
755: デフォルトの名無しさん (ワッチョイ 9321-/HUD) [] 2025/08/21(木) 04:26:17.36 ID:W7b3RP8P0 pyrightなんでtypescript使ってるんだろう node系のやつ重いしなんか不具合出るから嫌い http://mevius.5ch.net/test/read.cgi/tech/1743698824/755
756: デフォルトの名無しさん (ワッチョイ 9321-/HUD) [] 2025/08/21(木) 04:37:15.98 ID:W7b3RP8P0 pylspがいい? http://mevius.5ch.net/test/read.cgi/tech/1743698824/756
757: デフォルトの名無しさん (ワッチョイ dbc8-VfJp) [sage] 2025/08/21(木) 10:33:12.22 ID:5TY3/WJ10 VSCodeでPylanceを使っているけど、そこまで動作が重いとは感じないかな。警告がいっぱい出て鬱陶しいというのは分かるけど。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/757
758: デフォルトの名無しさん (ラクッペペ MM4b-k6JD) [sage] 2025/08/21(木) 11:42:59.90 ID:sU8D6GG4M AIを使う業務ソフトならすごいけど AIを使って作ったソフトって普通のソフトだよね http://mevius.5ch.net/test/read.cgi/tech/1743698824/758
759: デフォルトの名無しさん (ワッチョイ 9379-XJDV) [sage] 2025/08/21(木) 12:17:55.74 ID:xRU3TdBF0 AIを使(って作)ったソフト http://mevius.5ch.net/test/read.cgi/tech/1743698824/759
760: デフォルトの名無しさん (ワッチョイ ab7f-vIW/) [] 2025/08/21(木) 13:08:37.56 ID:2lMxcY0H0 AIを使って作った、AIを使う業務ソフトはどうなんだ? http://mevius.5ch.net/test/read.cgi/tech/1743698824/760
761: デフォルトの名無しさん (ワッチョイ 51ab-gibx) [sage] 2025/08/21(木) 14:36:13.83 ID:89YTIbF70 AIを使って作ったAIを使う業務ソフトを作るAIを使って作ったAIを使う業務ソフト http://mevius.5ch.net/test/read.cgi/tech/1743698824/761
762: デフォルトの名無しさん (ワッチョイ 115f-YAjS) [] 2025/08/21(木) 21:05:36.45 ID:qlXUTR3c0 AIでなんでも作れるならフォトショップと同等のものをAIに作らせてくれや(´・ω・`) http://mevius.5ch.net/test/read.cgi/tech/1743698824/762
763: デフォルトの名無しさん (ワッチョイ c991-fgJ7) [sage] 2025/08/23(土) 09:41:55.38 ID:6fcByJBp0 言語リファレンスで、型引数リストが複合文の最後に入れられているけど、あれって文なのかな? 暫定的に置いているだけ? http://mevius.5ch.net/test/read.cgi/tech/1743698824/763
764: デフォルトの名無しさん (ワッチョイ c92a-68+F) [] 2025/08/23(土) 19:28:41.00 ID:erudRyon0 言語リファレンス中を探し回れってか。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/764
765: デフォルトの名無しさん (アウアウウー Sa45-im2P) [] 2025/08/23(土) 19:47:31.14 ID:pcHjlSL+a BNF http://mevius.5ch.net/test/read.cgi/tech/1743698824/765
766: デフォルトの名無しさん (ワッチョイ db01-JnEk) [sage] 2025/08/23(土) 22:20:23.66 ID:dVERUN7r0 >>763 複合文を構成する要素だから複合文のページで説明してるだけ 式や単純文のところで説明してたらおかしい http://mevius.5ch.net/test/read.cgi/tech/1743698824/766
767: デフォルトの名無しさん (ワッチョイ 8610-ZAtR) [sage] 2025/08/24(日) 01:08:14.15 ID:+j+JozVj0 それ自体としては文ではないという点に引っかかりをおぼえていたんだが、式のところに演算子についての記述があるようなものか。 ただ、type文は単純文なので、単純文の構文要素になる場合もある……が、そこはまぁ分かるでしょってことで複合文のところにあるんだろうな。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/767
768: デフォルトの名無しさん (ワッチョイ 6a55-hBFX) [sage] 2025/08/24(日) 02:49:47.32 ID:Y0IRLNQN0 Pythonの内包表記やばいな こんなんでよくperlは読みにくいとか罵れるな http://mevius.5ch.net/test/read.cgi/tech/1743698824/768
769: デフォルトの名無しさん (ワッチョイ 7954-IRdO) [sage] 2025/08/24(日) 07:50:22.46 ID:rMBqpZLF0 慣れるとあれが自然言語のように読めるし、編集せずに先頭から書いていける http://mevius.5ch.net/test/read.cgi/tech/1743698824/769
770: デフォルトの名無しさん (ワッチョイ 8610-ZAtR) [sage] 2025/08/24(日) 08:22:02.52 ID:+j+JozVj0 要素を表現する式やinの後が長大になることもしばしばあって、そういう場合はたしかに読みにくいんだけど、基本的にはすごい便利な構文だと思うけどなぁ。発想としては集合の内包表記っぽく書けるようにしようということなんだろうし、やっぱりHaskellは偉大だわ。 たとえばlist内包なら[ (要素を表す式) for (ループ変数・iterable変数) in (iterable) ] で、要素を表す式を書くのにループ変数・iterable変数を使うことができるというだけなので慣れればそんなに難しくないよ。キーワードのforとinが短くて埋没しやすいのが読みにくさを感じる原因なのかもしれない。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/770
771: デフォルトの名無しさん (ワッチョイ 6aea-hBFX) [sage] 2025/08/25(月) 00:15:32.04 ID:FnDhpDPk0 慣れなんかな 巨大な行列が控えてる時の そんでもなんか人間の認知と違う気がする http://mevius.5ch.net/test/read.cgi/tech/1743698824/771
772: デフォルトの名無しさん (ワッチョイ 6a31-uCg5) [] 2025/08/25(月) 01:44:52.02 ID:cafSUUHh0 >>771 構文の話をするやつは道具の良し悪しばかりで論じて仕事はさっぱりできない人間 http://mevius.5ch.net/test/read.cgi/tech/1743698824/772
773: デフォルトの名無しさん (ワッチョイ adf5-3/RT) [sage] 2025/08/25(月) 03:06:00.70 ID:CxzN3iJP0 lambdaもだけど1行に複数の要素が入るととたんに可読性落ちるんで そこは自制するのがクールという文化(Pythonic) lambdaはdef、内包表記は複数行にするかforで書きなおす http://mevius.5ch.net/test/read.cgi/tech/1743698824/773
774: デフォルトの名無しさん (ワッチョイ 41e8-ZAtR) [sage] 2025/08/25(月) 09:43:24.92 ID:8weJ9FR00 lambdaに文は入れられないが、文を含むような場合は名前あり関数として定義する方がわかりやすい……というのが一般論として常に正しいかは相当に疑問だけど。たとえば引数をそのままprintするようなごく単純なコードでも(lambdaにはできないので)名前あり関数にしなければいけないというのはかなりダルい。 Pytnonの文化は文化として尊重するし、実際、概ね妥当なアドバイスになっていることが多いとは思うけど、変えられない言語仕様を擁護するために文化を持ち出すという側面が感じられることもあるかな。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/774
775: デフォルトの名無しさん (アウアウウー Sa11-ut8q) [] 2025/08/25(月) 09:52:09.91 ID:oTWQEhGga リスト内包が読み難いとか言ってる人は Generatorとかどうしてるんだろうか 理解出来ないものは目に入らないタイプの人か http://mevius.5ch.net/test/read.cgi/tech/1743698824/775
776: デフォルトの名無しさん (ワッチョイ be5c-ZAtR) [sage] 2025/08/25(月) 09:56:07.47 ID:srlPQ0qE0 失礼、print は例として適切じゃないね。単純な代入文に読み替えて。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/776
777: デフォルトの名無しさん (アウアウウー Sa11-ut8q) [] 2025/08/25(月) 09:57:57.26 ID:oTWQEhGga lambda x: (print(x), x)[1] http://mevius.5ch.net/test/read.cgi/tech/1743698824/777
778: デフォルトの名無しさん (ワッチョイ be5c-ZAtR) [sage] 2025/08/25(月) 10:00:20.80 ID:srlPQ0qE0 ジェネレーターはyieldで書けるから(強引) ま、慣れるまで読みにくいと感じる人がいるのは分かるけどね。慣れてても「えーっと」ってなることあるし。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/778
779: デフォルトの名無しさん (ワッチョイ ddec-hBFX) [sage] 2025/08/25(月) 10:06:45.19 ID:pqTCwzR00 >>774 Pythonコミュニティの文化って本質的には「そんなことより仕事しろ」であって、そう理解すると色々納得できるよ 言語を変えるよりしょうもない拘りを捨てた方が早い http://mevius.5ch.net/test/read.cgi/tech/1743698824/779
780: デフォルトの名無しさん (アウアウウー Sa11-ut8q) [] 2025/08/25(月) 10:15:14.12 ID:oTWQEhGga 代入したければ素直に__setattr__ http://mevius.5ch.net/test/read.cgi/tech/1743698824/780
781: デフォルトの名無しさん (ワッチョイ 6a40-hBFX) [sage] 2025/08/25(月) 11:03:28.46 ID:FnDhpDPk0 >>772 プログラムで仕事なんかしてねーし http://mevius.5ch.net/test/read.cgi/tech/1743698824/781
782: デフォルトの名無しさん (ワッチョイ 6a40-hBFX) [sage] 2025/08/25(月) 11:06:33.88 ID:FnDhpDPk0 >>775 ジェネレータなんて別になんもおかしくなくね? なんか初心者には難しそうと思った要素出してきたのか?w http://mevius.5ch.net/test/read.cgi/tech/1743698824/782
783: デフォルトの名無しさん (ワッチョイ be5c-ZAtR) [sage] 2025/08/25(月) 11:11:08.09 ID:srlPQ0qE0 Pytnonのlambda周りの言語仕様が今さら変わるとも変えたいとも別に思ってはいないけれど、無名関数の本体には文を含められないというのは、言語仕様として中途半端で失敗だったんじゃないかなとは思っている。Pytnonはもう変わらないけれど、新たに設計される言語では(言語設計者が仮に同様に感じたなら)Pytnonの失敗を踏まえてうまく修正するんでしょ。高級言語というのはいわはシンタックスシュガーなんだからそういう点の評価・検証は大事。 ついでに言えば、Pytnonコミュニティの本質が、本当にこういう点をどうでもいいと考えているかもかなり疑問だけどね。少なくとも不満を持っている人がPytnonコミュニティの中にも少なからず居るからこそ、FAQで言い訳じみた説明をしているんじゃないかと思っているが。 式しか含められない中途半端な代物だけど、それである程度は何とかなるのでそれで間に合わせるてくれというのがPytnonコミュニティの文化だということならまぁそうかなと思う。ただ、それが本質的にどうでもいい問題で、そんなことは気にしないのがPytnonコミュニティの文化だと言われると、それは違うんじゃないのってなるかな。 >>780 素直ではないと思うけどw、lambdaでその場で書くというのを優先するならそういうことになっちゃうよね。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/783
784: デフォルトの名無しさん (アウアウウー Sa11-ut8q) [] 2025/08/25(月) 11:34:45.78 ID:oTWQEhGga len(hoge) も糞仕様 http://mevius.5ch.net/test/read.cgi/tech/1743698824/784
785: デフォルトの名無しさん (ワッチョイ ad11-3/RT) [sage] 2025/08/25(月) 12:58:40.82 ID:CxzN3iJP0 最初は面食らうけど特殊メソッドで一般化できてる妙設計 糞だと思うなら代案どうぞ http://mevius.5ch.net/test/read.cgi/tech/1743698824/785
786: デフォルトの名無しさん (スフッ Sdea-ut8q) [] 2025/08/25(月) 13:12:16.74 ID:yimvSMn3d 代案 hoge.__len__() http://mevius.5ch.net/test/read.cgi/tech/1743698824/786
787: デフォルトの名無しさん (ワッチョイ be5c-ZAtR) [sage] 2025/08/25(月) 13:55:00.51 ID:srlPQ0qE0 __len__ は今でもあるから、代案ならhoge.lenみたいにメソッド形式で呼べるようにしたいという話なのでは? Fluent Python のどこかのコラムに書いてあったけど、よく呼ばれるのでパフォーマンスを気にしたとか何とからしいけど。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/787
788: デフォルトの名無しさん (ワッチョイ 29e1-M4AR) [] 2025/08/25(月) 15:47:13.68 ID:7aQuEbsn0 mapの糞さに比べたらlenなんて可愛いもんだ http://mevius.5ch.net/test/read.cgi/tech/1743698824/788
789: デフォルトの名無しさん (ワッチョイ be15-ZAtR) [sage] 2025/08/25(月) 16:01:01.59 ID:srlPQ0qE0 たしかに使う機会は比較的少ないけれど、複数のiterableから並行的に要素を取得していくような場合にはジェネレーター式よりmapの方が便利じゃない? zipだって特殊なmapなんだから、そんなに邪険に扱わなくても。 一番評判が悪いのは、文字列の連結のjoinだと思う。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/789
790: デフォルトの名無しさん (ワッチョイ ade0-3/RT) [sage] 2025/08/25(月) 17:18:36.19 ID:CxzN3iJP0 mapレベルならジェネレータ式で書くけど 特殊な操作は明示的にmore-itertoolsつかうんで結局mapなスタイルは残るな http://mevius.5ch.net/test/read.cgi/tech/1743698824/790
791: デフォルトの名無しさん (ワッチョイ 3e01-ChDN) [sage] 2025/08/25(月) 17:47:28.68 ID:d3/9MASU0 内包表記もlambdaも使うのはごく単純な処理でかつside-effect freeの場合だけ 特にlambdaは関数の引数としてインラインで書けるくらいシンプルじゃなければ基本使わない 個人的にはこれが基本原則だと思ってるけどlambdaのside-effectについて明記してるstyle guideないね http://mevius.5ch.net/test/read.cgi/tech/1743698824/791
792: デフォルトの名無しさん (ワッチョイ 41e8-ZAtR) [sage] 2025/08/25(月) 19:04:08.96 ID:8weJ9FR00 一般論として副作用のない式の方が望ましいのはそうだろうけど、内包表記やlambdaについて、そういう一般論を超えて副作用を避けるべき固有の事情って何かあったっけ。 自分は内包表記では(たまにlambdaでも)結構長いコードになっちゃうことがあるな。別のところに書いて名前で参照する方が分かりやすくなるならもちろんそうするんだけど、結局ここにそのまま書いた方がまだマシかなとなることが結構ある。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/792
793: デフォルトの名無しさん (ワッチョイ dd0f-hBFX) [sage] 2025/08/25(月) 20:04:04.19 ID:pqTCwzR00 >>792 内包表記や、lambda を引数に取るmapなどの関数は、本来的には実行順序に依存しない 副作用のある式を突っ込んでくるバカを想定するならその前提は破綻し、利用側の既存コードを破壊しないように関数の実装者は注意深く実行順序を維持しなければならなくなる http://mevius.5ch.net/test/read.cgi/tech/1743698824/793
794: デフォルトの名無しさん (ワッチョイ 8610-ZAtR) [sage] 2025/08/25(月) 21:38:48.75 ID:a/zkXuf60 それは一般論の範囲内の話だし、そもそも高階関数の実装者側が注意深く実装すれば副作用の影響を回避できるというものでもないような。どんな副作用かも分からないんだし。 一般論として副作用を持つ式というのは可能な限り避けた方がいいよねというのは前提とした上で、たとえば自分以外がコードに手を入れることはないということが分かっているようなケースでも副作用を避けないといけない具体的な理由みたいなものがあるのかなというのが知りたかったんよ。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/794
795: デフォルトの名無しさん (ワッチョイ bebd-hBFX) [sage] 2025/08/25(月) 23:52:22.89 ID:N2pfjYln0 >>794 一般論もクソも、副作用を考慮することで複雑性が高まることは自明であり、書くのが自分だけだろうと関係ない。 account.deposit(amount) これが実はaccountはCatクラスのインスタンスで、depositは引数に応じた声色でスピーカーから鳴き声を鳴らすメソッドで、amountには声色を指定する文字列が入っている可能性は否定できないだろう? accountとは本当に銀行口座なのか、実はディズニーランドではないのかなどと常に疑ってかからなければならない。 しかしお前は普段そんな心配はしていない。何故か?それはお前自身や周囲の人間がそこまでのバカではないとお前が信じているからだ。 同様に、lambdaに副作用書くバカは自分含めチームにいないと信じることにするなら、lambdaを見るたびにどんな副作用があるのか、同じ引数で2度呼び出されても問題ないのか、 といった余計な心配に脳のリソースを割く必要がなくなり、生産性が向上する。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/795
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
1.389s*