Pythonのお勉強 Part75 (968レス)
1-

719
(1): (ワッチョイ f641-1ngM) 08/12(火)15:45 ID:46uwwH/J0(6/8) AAS
Pytnonの型チェックはあくまでもヒントだからエラーというか警告だけどね。自分も比較的最近知ったことだから勘違いがあるかもしれないけれど、listはmutableコンテナだから共変ではないんだって。だから、A <: B(Bが上位型でAはその部分型)のときでもlist[A] <: list[B] にはならないらしいよ。
720: (ワッチョイ f641-1ngM) 08/12(火)16:10 ID:46uwwH/J0(7/8) AAS
たしかにlistの要素として、その型宣言時の要素型のサブクラスのインスタンスを入れるだけなら特に問題ないはずだとは自分も思うんだよね。
717のcontainer.widgets = [ label(), button(), textbox(), …… ] は、両辺の式の型の間に互換性がない(listは非変なので)点に問題があるということだとすると、container.widget.extend( …… ) とかの書き方にしたら大丈夫なんだろうか。ライブラリのリファレンスとかにはそういう書き方は出てこなかったけど。
721: (ワッチョイ df01-/C6k) 08/12(火)16:18 ID:PiEjVoIs0(2/3) AAS
>>719
型チェッカーがエラーと報告するならエラーでいいよ

listが共変でないというのは要素型のサブクラスはlistに入れられない話ではない

これはNG
mylist: list[label] = [label]
widgets = mylist

これはOK
widgets = [label]

これもOK
widgets = [label, button, textbox]
722: (ワッチョイ df01-/C6k) 08/12(火)16:34 ID:PiEjVoIs0(3/3) AAS
OKなはずなのにエラーが出てるのなら最小限の再現コードをpyrightのplaygroundにでも上げてもらったほうがいいかもね
723
(1): (ワッチョイ f641-1ngM) 08/12(火)16:57 ID:46uwwH/J0(8/8) AAS
なるほど、たしかにそれだと警告は出ないね。短い再現コードが出せるようならやってみるけどちょっと難しそうかな。たぶん代入文の右辺について、型チェッカーが(list[widget]と互換性のない)型情報をコード内の別のところから得ちゃっているということなんだろうと思うけど。
724
(1): (ワッチョイ 9a02-QbuV) 08/12(火)19:52 ID:CDoCkaEH0(1) AAS
>>723
型を明記しないとエラーとかってできる?
VBAみたいに

C++のほうが慣れてるから、そのほうがええわ
725: (ワッチョイ 4e10-1ngM) 08/12(火)21:31 ID:i9fPXIIb0(2/2) AAS
エラーにできるかというのが、静的型付けができていないコードの実行を自動的に抑止できるかという意味なら、Pytnon単体ではムリじゃない? あくまでも型「注釈」に過ぎないわけだし。でも、型チェッカーの方でそういう設定はあるんじゃないかなぁ。
726
(1): (ワッチョイ cb01-X2XY) 08/12(火)22:31 ID:jU+JMCmR0(1) AAS
>>724
pyrightのstrict modeを試してみるといいと思う
727
(2): (ベーイモ MM06-ZDX3) 08/12(火)22:41 ID:nRaft4INM(1) AAS
Pythonの型ヒントって型推論が許されてるけどどこまでそれが効くかはチェッカーの実装依存なんだよね
つまりチェッカーからすると型が不明というのは多くの場合において自身の型推論がショボいことを意味するわけで、
不明だからエラーにするというのは筋が通らないわけよ
せいぜい引数と戻り値に方指定を必須にするくらいだね
728: (ワッチョイ 7602-7soU) 08/12(火)23:05 ID:DyWlhw4u0(1) AAS
実行時まで型が決まらん、というのまであるしなあ
729: (ワッチョイ 8a9f-XAuV) 08/12(火)23:06 ID:6cjc6Wvo0(1) AAS
商用プログラム書くならパフォーマンス犠牲になってもランタイムの型チェックがほしい
こんどしれっとtypeguardいれてみようかな
AI支援もあるし猛烈に反対はされなそう
730
(1): (ワッチョイ 9a02-QbuV) 08/13(水)06:35 ID:o5KTBnUB0(1) AAS
>>726
まあでも、
やっぱ、オレみたいなやっぱ要望はたくさんあるんだな

型を明記して欲しいって人
731: (ワッチョイ 174e-ZDX3) 08/13(水)08:37 ID:+sjCYsF70(1) AAS
>>730
問題は>>727の通り、どこまで明記すれば不明でなくなるのかがPythonの仕様上不明であること
例えば x = f() において、fの戻り値がstrとして型指定されている場合、右辺の式 f() の型は何になるだろう? 左辺で宣言された変数xの型はどうか?
どっちも当然strと思うかもしれないが、これ正確にはどちらも型推論が必要で、なんと型チェッカーの実装依存なんだよね
x: str = typing.cast(str, f())
もし可能な限り明記しようとすればこうなるが、これでもなお実装依存でないとは言えない
732: (ワッチョイ 231f-1ngM) 08/13(水)09:44 ID:/jTyGuwU0(1) AAS
型付け・型検査の目的は型の不整合の有無を確認することだから、式の型が1つに確定できるならそれが最も分かりやすいとは思うけど、必ずしも1つに確定できなくても(たとえば式の型としてa型、b型、c型の3つの可能性があって、そのいずれについても)型の不整合が生じないことが確認できているのであれば、それで型付け・型検査としての役割は果たしているようにも思うけど。
733: (ワッチョイ 0754-mJPu) 08/13(水)09:48 ID:rfdqQR7l0(1) AAS
動的型付け言語を静的型付け言語のように取り扱うのが間違い
無管理よりは何かやれることあるだろうという模索の最中だけど、本質的に困難
734: (ワッチョイ f63f-1ngM) 08/13(水)10:05 ID:IjqUTXVC0(1) AAS
もちろん、静的型付け言語と全面的に同じことができるわけではないけれども、部分的にではあれ良いところを真似することはできるし、邪魔くさいという人は従来どおりのスタイルで書くこともできる。型指定をアノテーションにとどめるというのはそんなに悪いアイデアではないと思うけどなー。
735: (アウアウウー Sac7-Kgix) 08/13(水)12:39 ID:U7zZSy+Fa(1) AAS
PyhtonのListが型限定されたら嫌だな
もちろんPyObjectとしては限定されてるが
そういう意味じゃないんだ
736: (ワッチョイ 4ecf-vKG+) 08/13(水)14:26 ID:52kJFnMW0(1) AAS
>>727
ESLint だと明示的でない any を警告するオプションがあったりする。
型が不明という状況がその型推論がショボいことを意味したりはしないと思うがな。

ただ実用上の問題としては、型ヒントを提供していないモジュールが多いんで
警告が出まくる可能性があること。
737
(1): (ワッチョイ 175f-eMCN) 08/13(水)16:15 ID:jrIykVeu0(1) AAS
自分はpylanceのbasicでちょうどいいくらいだわ
738
(1): (ワッチョイ 3efe-bxVO) 08/13(水)17:18 ID:vtzVqfUP0(1/2) AAS
labelStudioのインストールについて質問してもいいですか?
WindowsパソコンでlabelStudioの最新版をインストールしたのですがコマンドプロンプトでpipコードを入力してもファイルが見つかりませんとなってlabelStudioが起動出来ません。
わかる方いますか?
739
(1): (ワッチョイ 23e7-XAuV) 08/13(水)18:47 ID:God64kkW0(1) AAS
>>738
外部リンク:labelstud.io
これでためしてみて
Dockerなんて要らないとおもうかもしれないけど
それならまずそんなところで躓かないくらいのオタクになる必要がある
740: (ワッチョイ 3efe-bxVO) 08/13(水)19:30 ID:vtzVqfUP0(2/2) AAS
>>739
Dockerとはなんぞや?なレベルなんてちんぷんかんぷんです。
ずぶの素人にはインストールすらむずいっす
741: (ワッチョイ dff2-ChRm) 08/15(金)00:02 ID:UemuT+6G0(1) AAS
pyxが出たよ

…何するツール?

外部リンク:astral.sh
742: (ワッチョイ 41f0-/HUD) 08/19(火)07:51 ID:fyqgDdBA0(1) AAS
配列でもdict使えば分かりやすいし変数名で何入るかだいたい分かるやろ
pythonて組込みには使わないし型なんているんか🐼
743: (ワッチョイ 5957-l4ws) 08/19(火)09:47 ID:ndmX+Emn0(1) AAS
ある程度規模が大きいプログラムでないと型のありがたみは分からないと一般的に言われているのでは。個人的には一応できるだけ型は付けるようにしているけど、可読性の低下に見合うメリットを実感できているかと言われると微妙なところかな。
typingも急速に複雑化したよねー
744: (ワッチョイ 6130-im2P) 08/19(火)11:31 ID:2nwbx/Cn0(1) AAS
型記述すると可読性が低下すると思っている人と
型記述しないと可読性が低下すると思っている人がいる
745: (ワッチョイ 4191-Qwzy) 08/19(火)11:53 ID:CS+/mYIY0(1) AAS
使わない理由は手間に見合うかどうかなんだとおもう
コードのノイズになるってんならIDEに型ヒント部分を隠す拡張があればいい
746: (ワッチョイ dbc5-l4ws) 08/19(火)12:50 ID:AwWeWqwl0(1) AAS
型ヒントを一時的に隠す機能は、たしかにちょっと欲しいかも。というか、もうあるのかもしれないけど。
他人が書いたコードとか、自分が書いたコードでも内容をだいぶ忘れてしまったコードを読むときは型ヒントが大いに助けになるけど、ある程度内容を把握しているコードだと型ヒントがない方が読みやすいってことは結構あるだろうとは思う。
747: (ワッチョイ 214b-ZBQJ) 08/19(火)17:20 ID:EZlqtCJf0(1) AAS
型ヒントないとメソッドに飛べないでしょ
効率的にコーディングするために必要だよ型ヒントは
748
(2): (ワッチョイ db07-l4ws) 08/20(水)14:50 ID:v4jtEgpO0(1/2) AAS
lambdaの本体に式しか含められないという制限は、どういう考慮からなんだっけ? 名前あり関数を定義すれば済む話なのでそこまで不便というわけではないのだけれど、lambdaの中にそのまま書けたほうが自然なのになと思うことはちょくちょくある。
1-
あと 220 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.020s