Pythonのお勉強 Part75 (973レス)
Pythonのお勉強 Part75 http://mevius.5ch.net/test/read.cgi/tech/1743698824/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
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/r
ead.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
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 233 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.009s