Pythonのお勉強 Part71

■ このスレッドは過去ログ倉庫に格納されています
2023/09/20(水) 09:13:41.41ID:u6xixiUt0
↑スレ立てる毎に減るので、減ってたら3つに補充すること。

・当スレにRubyのソースコード類を書くことを禁ず
・Ruby等、Pythonではないプログラミング言語での回答類・質問を書くのも禁止
・「Ruby では」「Rubyでは」「Rails」正規表現→「^クソチョンw$」をNGワード登録推奨
・エラーを解決したいときは、かならず
 エラー文(勝手に省略orスクショうp等の横着禁止)と
 おま環(Pythonのバージョン番号+OS名とバージョン+IDE名)を書け。

★Pythonのソースコードを5ちゃんに直貼はインデントが崩壊するので、
  ↓等のコードうp用サイトに貼ってきてくだしあ。(スクリーンショットをうpる「横着」禁止)
ttps://techiedelight.com/compiler/  Run Code機能あり。
ttp://ideone.com/      デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。

◇Pythonオフィシャルサイト http://www.python.org/
◇Pythonドキュメント https://docs.python.org/ja/3/
◇まとめwiki ttp://python.rdy.jp/
※前スレ
Pythonのお勉強 Part70
https://mevius.5ch.net/test/read.cgi/tech/1677856680/
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
2023/09/22(金) 23:16:15.48ID:el8Vm2jw0
venv --copiesのこと?
共有ライブラリの依存も嫌ならPython本体をスタティックリンクするとか
70デフォルトの名無しさん (ワッチョイ d35d-cyss)
垢版 |
2023/09/23(土) 01:44:58.14ID:HGxCD3ya0
>>61
MacでもWinでもLinuxでもpyenvとpoetryで実行環境のバージョンは同じコマンドで管理できるよ。
2023/09/23(土) 07:19:29.70ID:aQF8TmPAd
>>62
py.exeって引数をうまく渡してくれないの?
2023/09/23(土) 07:39:16.67ID:d+5nAcW50
virtualenvでいいじゃん
73デフォルトの名無しさん (アウアウウー Sacf-PB4I)
垢版 |
2023/09/23(土) 09:43:23.24ID:i9fpyxKga
>>68
anacondaにしとけ
2023/09/23(土) 09:49:00.12ID:s8duiTph0
>>49
venv環境の中にはそれぞれpython.exeが置いてあるからそのパスを直接指定すれば同じことができる。
2023/09/23(土) 10:07:24.48ID:CxeGIQq5M
こんにちは

久しぶりにpython触ったら明示的な型指定が導入されたみたいで喜んでたけど
実際は型を無視した代入や引数を渡せてしまうねw

型ヒントで何も制約できないんだな
これを有効に活用できる局面ってなんなんだ?
VSCodeでもエラー表示などがないんだけどプラグイン次第で何かしてくれるのかな?
76デフォルトの名無しさん (ワッチョイ 8a7d-GA9g)
垢版 |
2023/09/23(土) 10:20:35.22ID:BABnIcFf0
>>74
それvenv使う意味ないだろ
2023/09/23(土) 11:26:41.25ID:o5mjK/05M
>>75
型ヒントは型指定必須の言語から来た開発者のアレルギーを抑えるための間に合わせ機能
純粋なPythonユーザーには百害あって一利なし
2023/09/23(土) 12:30:04.78ID:/sRqhdcI0
型ヒントはそれ単体では役立たなくても、開発環境と合わせると便利になる
2023/09/23(土) 12:54:39.76ID:adi3U+Mp0
型アレルギー持ちPythonユーザーが炙り出されたようだな
2023/09/23(土) 13:11:46.73ID:9zAj6sEFM
型型やかましいわ
pydantic使えよ
2023/09/23(土) 17:55:51.88ID:AkoBTn5S0
型ヒントつけないとインテリセンスにでてこないからつけるわ
2023/09/23(土) 20:55:02.75ID:s8duiTph0
動的型付けスクリプト言語で規模が大きくなってきたら「ここにはこんなデータが来る」って
コメントを書いておかないと訳が分からなくなる。
それを処理系でチェックしてくれて間違いを減らせるようになったようなもの。
2023/09/23(土) 20:55:14.77ID:s8duiTph0
動的型付けスクリプト言語で規模が大きくなってきたら「ここにはこんなデータが来る」って
コメントを書いておかないと訳が分からなくなる。
それを処理系でチェックしてくれて間違いを減らせるようになったようなもの。
2023/09/23(土) 21:00:22.56ID:/sRqhdcI0
処理系でチェックしないやん、という話
2023/09/23(土) 21:41:01.16ID:piK9W+al0
mypy使ってるけど型推論が貧弱なのでもっと強力にして欲しい
2023/09/23(土) 21:47:50.75ID:s8duiTph0
>>84
処理系と開発環境は別物って話?
2023/09/23(土) 21:57:53.53ID:/sRqhdcI0
コンパイラとかインタプリタとかCPUが処理系
エディタとかドキュメントは処理系じゃない

学校の理系の建物付近にある食堂の名前が「お食事処理系」で、処理系にしか見えなかった
2023/09/23(土) 22:24:50.97ID:s8duiTph0
なるほど、じゃあそれでいいよ。自分の認識じゃあ構文解析は処理系の範疇だったんでああ書いただけで。
2023/09/23(土) 23:23:06.47ID:lai5+1qVM
どうでもいいことだよな
誰か困ってるヤツいるのかね?
2023/09/23(土) 23:38:08.29ID:CxeGIQq5M
正直なところ俺が困ってるw
tsみたいな仕組みでいいからどこかで型チェックを保証してくれw
2023/09/23(土) 23:51:47.49ID:VsKxPq+H0
構文解析と字句解析が近藤さんの人ガイル
2023/09/23(土) 23:53:03.90ID:VsKxPq+H0
音速衝撃波!!
2023/09/23(土) 23:53:47.10ID:VsKxPq+H0
(((( 💪
2023/09/24(日) 00:01:09.63ID:9leOLZhk0
>>90
やってることはあまり変わらんけどな。tsはトランスパイルというステップがあるから
そこでエラーとしてはじいているだけで、
Types as Comments だと python と同じような感じなんだろうな。
2023/09/24(日) 00:02:06.03ID:Oioe+GVvM
>>94
実行時はチェックされないけどどこかのステップで解釈されてる
それでいい
2023/09/24(日) 00:11:10.51ID:9leOLZhk0
>>91
そこは字句解析じゃなくて意味解析じゃないか?
2023/09/24(日) 07:37:29.76ID:Ri8XQsCRM
>>90
型宣言とカッコを省略したことでコードをシンプルに保つ方向に振りきったのがPythonという言語
それをなぜ崩そうとするのか
型ヒントを使ったコードを見たことがあるか?
あんなのはもうPythonじゃない
頼むから大人しくC#やJavaを使っててくれ
2023/09/24(日) 08:15:46.12ID:hltzsV5kM
>>90
ないものは無い
自分で作れないなら
他に移ればすむ話
99デフォルトの名無しさん (アウアウウー Sacf-PB4I)
垢版 |
2023/09/24(日) 09:30:39.81ID:2YTVyUlCa
>>87
お食事処理係
に観えた
100デフォルトの名無しさん (アウアウウー Sacf-PB4I)
垢版 |
2023/09/24(日) 09:33:06.56ID:2YTVyUlCa
>>97
そうだな
そこまで型にこだわりたいならRust使えば良いのにって思う
きっとあほなんだろう
101デフォルトの名無しさん (アウアウウー Sacf-PB4I)
垢版 |
2023/09/24(日) 09:33:53.86ID:2YTVyUlCa
>>97
大事な事描き忘れた
Nimでも良いよ
2023/09/24(日) 10:58:42.55ID:Kcpwutr20
型ヒントに親でも殺されたのか?
使いたくなければ使わないだけの話なのに
103デフォルトの名無しさん (ワッチョイ bbb1-4mfa)
垢版 |
2023/09/24(日) 11:02:47.99ID:+gAzw3Ne0
python使ってると、もうC++で書くきがしないよね。
2023/09/24(日) 11:05:04.02ID:RJSP/rbZ0
Cでは今でも書いてるけど、C++は書いたことないな
拡張子だけcppで複素数とか使ってるけどクラスは使ってない、程度なら書いた
2023/09/24(日) 13:17:50.18ID:9U+Q8xyt0
python使いたくないんだけどpythonにしかないライブラリを再発明するパワーもないので仕方なく使っている
2023/09/24(日) 13:23:16.93ID:RJSP/rbZ0
こんなソフト無いかなと検索しても、windows用が無くてandroid用しか見つからないようなもんか
2023/09/24(日) 13:29:34.13ID:l4Xb0TnP0
>>103
pythonでQt触っててC++でも触ってみたらC++も良くなっててこっちでもいいやんって思ったけど
ライブラリ探したりコンパイルするの面倒くさく感じてやめた
108デフォルトの名無しさん (アウアウウー Sacf-PB4I)
垢版 |
2023/09/24(日) 13:42:18.77ID:2YTVyUlCa
>>105
Nim使えばいい
2023/09/24(日) 14:31:18.01ID:CVj1/D3K0
C++はソフトウェアに最小限必要な制約の記述と
最適化に関する記述を分離できていない
全部ごっちゃ
その意味ではRustも大差ない
2023/09/24(日) 15:03:52.20ID:9leOLZhk0
>>108
pythonのライブラリ使えるのか?
2023/09/24(日) 15:21:16.70ID:PsXnhINod
馬鹿には無理
112デフォルトの名無しさん (ワッチョイ bbb1-4mfa)
垢版 |
2023/09/24(日) 15:34:59.57ID:+gAzw3Ne0
>>107
Python/Qt 最高だよね。
もう、ヘッダーファイルを書くなんて面倒で面倒でw
113デフォルトの名無しさん (ワッチョイ ab1b-zG+p)
垢版 |
2023/09/24(日) 15:44:30.62ID:a7FFFuge0
Qtが企業だと知って萎えた
無料で仕事してくれる人なんていないよね
2023/09/24(日) 17:14:53.18ID:9U+Q8xyt0
>>108
Nim使うからRust使うわ
115デフォルトの名無しさん (ワッチョイ a7a7-iHBT)
垢版 |
2023/09/25(月) 08:05:09.08ID:or0ZXPD90
>>97
型宣言付けたら自動補完きくからコード書きやすいだろ
バグ取りも圧倒的に楽だし
他人のコード読むなら絶対あったほうが楽
見た目が醜いのはそうだけど静的型チェックなんだから自分しか使わないならいらないと感じたとこで消せばいい

Pythonはカッコ少ないのは美点だと思うけどじゃあprintもカッコなくして文に戻してよって思う
116デフォルトの名無しさん (ワッチョイ a7a7-iHBT)
垢版 |
2023/09/25(月) 08:08:58.57ID:or0ZXPD90
型チェックを憎むやつの正体
・IDE嫌いの老害
・メソッド名や属性名を全て覚えておりどの変数に何が入っているか全て知っている天才
・簡単で汎用性の極めて乏しいスクリプトしか書かない人
・numpyなどで実質型指定の恩恵を受けている
117デフォルトの名無しさん (ワッチョイ 86fc-4KCz)
垢版 |
2023/09/25(月) 08:47:06.87ID:doWFzkf50
>>115
静的型チェックではないぞ
2023/09/25(月) 09:07:43.95ID:rxWsx5B/0
文字か数かは見れば判るし、
リストとか辞書の場合は、変数名をそうしておかないと型チェック以前に書くのに困る
なんちゃってハンガリアンで十分

現状困ってないのに型チェックを導入するのは、理不尽なコーディング規約みたいなもので、
慎重になった方がいい
119デフォルトの名無しさん (アウアウクー MM63-iHBT)
垢版 |
2023/09/25(月) 09:45:41.16ID:c51+DnWAM
>>117
型付けが動的なだけで型チェックは静的
2023/09/25(月) 09:52:10.17ID:rxWsx5B/0
型付けの静的/動的とチェックの静的/動的は意味が違う
2023/09/25(月) 10:44:27.45ID:rOgiuc6x0
現状困ってなくてもエディタの入力補完の恩恵を受けられるようになるのは大きなメリットだと思うけどな
2023/09/25(月) 11:19:52.99ID:2mEvB7200
>>118
強制されてないんだから恩恵がない天才派はそれでOK
じぶんは名前に型含んでたらレビューで難癖つけるけどね
2023/09/25(月) 11:33:59.63ID:rxWsx5B/0
for data in data_list:
とかよく書くけどな

複数形を使うのはあんまりいい方法と思えない
124デフォルトの名無しさん (アウアウクー MM63-iHBT)
垢版 |
2023/09/25(月) 12:04:10.57ID:c51+DnWAM
x_intとかx_strみたいな変数名のことじゃなくて?
型アノテーションなかった頃は見てわかる変数名はいいアイディアだったと思うけど今はアノテーション使って書くな

data_listみたいな名付けはする
datas, xsは最悪だと思うけどx_listだと長過ぎるように感じて悩んでる
この辺ってルールあるの?
2023/09/25(月) 12:38:00.66ID:zuFHd0dz0
datumの複数形がdata
もしくは不可算名詞の単数形としてのdata
datasは間違い
2023/09/25(月) 12:47:41.75ID:rxWsx5B/0
リストは複数形、というルールにしたとしても、辞書はどうするんだっていう
名前に型含めると噛みつくうざい人がいたとしても、含めた方がいい
2023/09/25(月) 12:56:23.29ID:sPLXdhtl0
オナーニばかりしてんちゃうぞ
pep8の通りにやることめざしゃ
128デフォルトの名無しさん (アウアウウー Sacf-PB4I)
垢版 |
2023/09/25(月) 12:59:59.83ID:RmxLVxNPa
それ良く言われるけど
英文法の例外に合わせる必要なんてない
hogeがあったら機械的にhogesにする
Railsでも採用されてるnameイングルール
129デフォルトの名無しさん (ワッチョイ 1e46-w4ab)
垢版 |
2023/09/25(月) 13:00:41.69ID:3JRaW9kj0
>>116
> 型チェックを憎むやつの正体
> ・IDE嫌いの老害

「型」を寧ろ老害扱いしてたんじゃ。
130デフォルトの名無しさん (アウアウウー Sacf-PB4I)
垢版 |
2023/09/25(月) 13:01:12.12ID:RmxLVxNPa
datasをdata_seriesの略だとする言い訳もある
2023/09/25(月) 13:01:37.98ID:QOTHJNXA0
型の判別のためではなく、それが何かを表すために変数名にdicを含めることは普通にあるだろう
結果として型名が含まれてるだけであってそれをレビューで弾く必要はなかろう
2023/09/25(月) 13:05:46.35ID:2mEvB7200
ほんとに辞書ならdictでいいよ
request_header_dict
は止めてほしい
2023/09/25(月) 13:41:51.05ID:QOTHJNXA0
意味、役割が辞書的なものなら実際の型によらずdictでも別にいいと思うけどな
2023/09/25(月) 13:49:27.17ID:rxWsx5B/0
perlは楽だった
$dataと@dataと%dataが同時に使えて、
リストなのか辞書なのか見ただけで判るし名前で苦労しない
135デフォルトの名無しさん (ワッチョイ 1e46-w4ab)
垢版 |
2023/09/25(月) 14:10:52.93ID:3JRaW9kj0
>>134
ハンガリアン記法で代替すりゃいいじゃない。
2023/09/25(月) 14:18:03.40ID:rxWsx5B/0
まあ、@dataとdata_list、%dataとdata_dictが同じものなので、
記号で書くか文字列で書くかの違いだけなんだけど

実際、perlから移植する時はそんなふうに機械的に置き換えてる
2023/09/25(月) 19:20:02.88ID:BYuYgOypd
>>118
>文字か数かは見れば判るし、
それが通用する程度のプロジェクトなら必要性を感じられなくてもしょうがない
2023/09/25(月) 19:33:05.13ID:rxWsx5B/0
規模が大きくなると訳が判らなくなっても仕方ない
という諦めに抗い続けたのが言語の進化の歴史なんよ
2023/09/25(月) 19:38:40.05ID:sd9Bn/Fb0
処理系は処理系で必死に変数の型をなくそうと努力し、
利用する側は利用する側で変数の型を意識しやすくしようと努力する
2023/09/25(月) 20:02:55.68ID:rxWsx5B/0
一部の人が苦しい思いをしながら型を意識して書いたライブラリを、
大半の人は型なんか意識せずに気軽に使う、という分業が今のところの正解なのだろう
一つの言語だけで全体をカバーするのは無理
2023/09/25(月) 20:19:47.64ID:v3kx0nZB0
>>140
「見ればわかる」程度のコードしか書かない人にとってはそうかもしれないが
そんなんばっかりなわけはないからな
2023/09/25(月) 20:28:32.03ID:rxWsx5B/0
見れば判るコードが一番いいコードなんだよ
なんで難解さをドヤれるんだ
2023/09/25(月) 20:33:17.65ID:9KhxBWdoM
伸びてるな

>>142
そういう意味じゃないでしょうw
2023/09/25(月) 20:34:55.62ID:v3kx0nZB0
>>142
単純に規模が大きくなるだけでも「見ればわかるとは言えなくなるだろうに。
それともお前の頭じゃ関数定義するだけで難解なコードなのか。
2023/09/25(月) 20:35:22.38ID:+xNGfQXE0
フェレイゼンも30年の研究の結果
プログラミングには型が必要だとわかったといってた
2023/09/25(月) 20:39:42.84ID:9KhxBWdoM
小さいプログラムしか書かない人は型が要らないと言う
別に書くことを強制されてるわけでもないのに

小さくてもファイル3個ぐらいに別れてたら絶対型がいる
147デフォルトの名無しさん (ワッチョイ 0690-44ew)
垢版 |
2023/09/25(月) 20:43:06.80ID:i7V/7hMm0
設計書ないの?
2023/09/25(月) 20:45:48.37ID:sPLXdhtl0
自己満オナニー主義者としてはやはりPEP8くらいマスターしておきたいよなー
自分で読んでわかるのも2・3年後に読んだらわからんくなる人もいるし
いつも同じオナニーばっかりの人はどっちよりに曲がっていても気付かないものだしな
2023/09/25(月) 20:47:01.71ID:sPLXdhtl0
Pythonを研究で使う人って設計書書かないっしょ
あとから必要になったときにリファクタリングするついでに設計書書く感じじゃね
2023/09/25(月) 20:48:13.53ID:9KhxBWdoM
なんだか見てると頭が痛くなるな
py界はちょっと参加者が違う
2023/09/25(月) 20:49:47.51ID:BYuYgOypd
>>138
その言語の進化の歴史に型ヒント、型チェックは含まれるの?
152デフォルトの名無しさん (ワッチョイ 0690-44ew)
垢版 |
2023/09/25(月) 20:50:39.88ID:i7V/7hMm0
なんで研究前提になっているかは知らんが、
システム・ライフ・サイクルがある程度の期間であれば設計書は作成するでしょ。
記憶できない規模なら、なおさら。
2023/09/25(月) 20:58:58.46ID:9KhxBWdoM
趣味のプログラムならそんなものは作ってないだろう
最初はモジュール含めてトータル3000行だったものが1万行オーバーとか普通だし
2023/09/25(月) 21:07:13.67ID:9KhxBWdoM
#データ読み込み
#加工
#ライブラリに渡す
#結果をプロット

しかやってない人は型はいらないというだろうけどこれでも型はいると思う
2023/09/25(月) 21:35:08.48ID:zzoLmi2T0
本当に必要なのはデータを取り違えない適切なアノテーション
型自体は最適化の領分
2023/09/25(月) 21:44:51.84ID:9KhxBWdoM
実現したいことが30行程度の人はある意味幸せなのかも
2023/09/25(月) 22:11:48.17ID:SlvnoeIB0
>>142
>見れば判るコードが一番いいコードなんだよ
これに尽きる
見ればわかるコードにするのはそれなりにスキルいるからね
2023/09/25(月) 22:42:07.31ID:p/yzOgz90
それに対する>>144
>単純に規模が大きくなるだけでも「見ればわかるとは言えなくなるだろうに。
にID:rxWsx5B/0がどう返答するのか注目
2023/09/25(月) 22:51:51.12ID:sd9Bn/Fb0
「見れば分かる」にもいろいろ解釈の余地があるからな

何を見たのか、断片なのか全体なのか
何が分かったのか、その断片の処理なのか全体の機能なのか
2023/09/25(月) 22:56:08.31ID:rxWsx5B/0
規模が拡大すると、全体で何をしているのかが把握できない
という事実を振り回しているだけに見える

そんなのは当たり前の話で、だから細かく細分化したり抽象化できるようになってる
その細分化された最小パーツの段階で型ヒントが必須かどうかは、
全体の規模とは無関係な話
2023/09/25(月) 23:00:29.29ID:v3kx0nZB0
>>157
>見ればわかるコードにするのはそれなりにスキルいるからね

そこをツールでサポートできれば楽になるわけだよね
2023/09/25(月) 23:20:29.62ID:ExPntN/Hd
メリット・デメリットがあるなら
使い分ければいいじゃん
163デフォルトの名無しさん (ワッチョイ bbb1-4mfa)
垢版 |
2023/09/25(月) 23:30:04.95ID:EXdIEqjr0
2万行ぐらいのプログラムは、大きい? 小さい?
2023/09/25(月) 23:43:41.98ID:BYuYgOypd
>>160
ある関数が取るパラメータの型は何か、返す値の型はなにか
その関数自体だけからでは読み取れない場合は中の処理を順に追っていく必要に迫られる
そして規模が大きくなるにつれてその探索範囲も広く深くなっていく

型ヒントの有用性は最小パーツ(数行程度の関数)であってもプロジェクトの規模に応じると考える方が自然では?
2023/09/26(火) 00:04:04.98ID:qxNS/0+Y0
一見動いてるけど間違ってるのを認知する助けになるから型チェックは有難い
特に凡人ほど恩恵を受けやすい
2023/09/26(火) 00:46:46.76ID:cCYCck9J0
VSCodeとか開発環境使ってれば圧倒的にタイプ数が違う
2023/09/26(火) 06:46:24.36ID:fBLAaznsM
絶対に譲歩の無い議論をいつまでやるつもりなんだ
無能で暇だと言うことしか解らないぞ
168デフォルトの名無しさん (ワッチョイ a79d-iHBT)
垢版 |
2023/09/26(火) 08:36:34.19ID:m7WWnQHX0
見ればわかるコードが一番ってその通りでそれを実現するのがアノテーションなのでは?
型チェッカー入れてなくてもstrとかintとか書いてあるだけで多少便利でしょ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況