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/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とか書いてあるだけで多少便利でしょ
169デフォルトの名無しさん (ワッチョイ ffbf-4KCz)
垢版 |
2023/09/26(火) 10:30:03.44ID:FeH8Ispq0
>>165
テスト書いてないの?
170デフォルトの名無しさん (ワッチョイ a79d-iHBT)
垢版 |
2023/09/26(火) 12:24:57.32ID:m7WWnQHX0
>>169
テスト書くとしてもテスト書くときにどの関数をどの型の変数が通過して…って考える必要あんだから、書かない理由にはならないでしょ
テストきちんと書くほど細心でなんで型アノテーションしないの
171デフォルトの名無しさん (ワッチョイ a79d-iHBT)
垢版 |
2023/09/26(火) 12:28:49.95ID:m7WWnQHX0
俺はそこまでしてないけど、実行時に入った変数の型見て自動でアノテーション生成してくれるツールとかもあったはず

研究、実験とか数学に使いたい人が、思考が阻害されるからつけないっていうのはわかるよ
そうじゃないのに型アノテーションに反抗してる人は、正しい道具を使ってないから文句が出るだけだと思うわ
それか用途が限定されてる小規模コードしか書いてない
172デフォルトの名無しさん (ワッチョイ ab1b-zG+p)
垢版 |
2023/09/26(火) 16:30:57.25ID:lxwVAsqB0
そもそも型で躓く人はプログラミングに向いてないと思うんだよね
173デフォルトの名無しさん (ワッチョイ 0a7f-hriW)
垢版 |
2023/09/26(火) 20:52:38.66ID:WQhrHw+N0
Pydanticっていうライブラリがあってだなぁ
174デフォルトの名無しさん (ワッチョイ 0a7f-hriW)
垢版 |
2023/09/26(火) 20:53:40.62ID:WQhrHw+N0
>>172
まぁそれはそうだけど
JSなんかは型の曖昧さが逆に間口広くなって使う人が増えてるまであるから
2023/09/26(火) 21:32:08.30ID:t9DgueCM0
TS触ってJSなんかにもう戻りたくないと思うかどうか
176デフォルトの名無しさん (ワッチョイ 86aa-4KCz)
垢版 |
2023/09/27(水) 00:31:04.87ID:G2/rCfPl0
>>170
「テスト書かずに型ヒント書く」笑えない
2023/09/27(水) 00:55:33.55ID:tcNPn/P00
>>170のどこをどう読んだら「テスト書かずに型ヒント書く」になるのか
178デフォルトの名無しさん (ワッチョイ 0690-44ew)
垢版 |
2023/09/27(水) 06:30:10.21ID:ddIA8xfv0
修飾語(英語でいう目的語)がない文章に反応するから、こいういう事になる。
文章として不十分なレスはスルーが基本。
179デフォルトの名無しさん (アウアウウー Sacf-PB4I)
垢版 |
2023/09/27(水) 11:16:50.05ID:OOPn+kCla
>>165
WindowsのAPIはboolを還す定義されていても3値戻って来たりするからな
2023/09/30(土) 00:30:05.29ID:KBI1seNT0
tk.tk (NG用)

更に家族等などに教えて、更に¥4000×人数をGET!
https://i.imgur.com/AOHjPUT.jpg
2023/09/30(土) 00:39:07.13ID:Q20RaGpG0
>>180
金盗まれる詐欺な
2023/09/30(土) 01:56:52.88ID:xT2aB7fT0
>>180
これは知らなかった
183デフォルトの名無しさん (ワッチョイ cb46-Q3QL)
垢版 |
2023/09/30(土) 07:00:11.33ID:5PlfPHl00
>>180
グロ
2023/09/30(土) 10:20:59.78ID:1bpEmQaSM
型ヒントの導入には正直かなりショックを受けた
シンプルを旨とするPython運営がこれほどの愚行を犯すとは
コードのタイプ量は3割増しになってPythonの良さは大幅に失われるだろう
そうなる前に古いバージョンのインストールファイルをこまめに保管しておくしかない
2023/09/30(土) 10:45:18.53ID:B+iPWXEz0
使いたくなきゃ使わんでもいいってのが型ヒントのいいとこやぞ
2023/09/30(土) 11:07:31.76ID:+PzIRgSu0
働きたくない
2023/09/30(土) 11:41:27.50ID:+WV6fTrGa
働いたら負け
2023/09/30(土) 12:01:20.00ID:5U2odjyx0
使うときも全部に型ヒント付ける必要もないしな
関数の引数に付けるだけでも効果十分
2023/09/30(土) 12:36:44.89ID:+WV6fTrGa
結局チェックされないなら間違ってても通ってしまう訳で
間違ってると内容と矛盾してどっちが本当か判らなくなって
信用出来なくなって毎回内容確認するハメになって
結局効率悪くなる害悪でしかない
2023/09/30(土) 12:41:17.31ID:kPlTAx4gd
チェックされない型ヒントもどきはない方がいい
書いたならちゃんと有効活用しろ
2023/09/30(土) 13:01:40.58ID:B+iPWXEz0
>間違ってると内容と矛盾してどっちが本当か判らなくなって

どういう状況を想定してるんだろうか。
192デフォルトの名無しさん (ワッチョイ 051b-voBv)
垢版 |
2023/09/30(土) 14:46:33.30ID:1cX5xto90
Pythonの文法を頑なに守りつつオブジェクト指向プログラミングを続けようという涙ぐましい努力
2023/09/30(土) 15:22:12.31ID:yB2FVVQo0
>>180
とっくに全員やってね?
194デフォルトの名無しさん (ワッチョイ cb46-Q3QL)
垢版 |
2023/09/30(土) 15:55:47.06ID:BfD477rw0
>>189
関数入出力情報のドキュメントが信用できないってのは、適宜メンテしてね! 以外にどうしようも無いんじゃね。
195デフォルトの名無しさん (ワッチョイ 051b-voBv)
垢版 |
2023/09/30(土) 17:28:50.98ID:1cX5xto90
まあどうせ観念していずれ型宣言も文法に組み込むんだろうけどさ
2023/09/30(土) 19:14:27.46ID:hQVVFgf/0
>>189
具体的なサンプルコードで状況説明してくれる?
197デフォルトの名無しさん (ワッチョイ 2585-2pcI)
垢版 |
2023/09/30(土) 22:47:55.23ID:JXMtOmCl0
仕事でExcelファイルを処理することになった
Pythonだけでどうにしようとしたけど、限界がきてVBA触ってる
色々つらいけど、特に開発環境がつらい
2023/09/30(土) 23:01:40.77ID:XalifVE+0
図形とかグラフとかは辛いな
excelがメインの処理の場所ならpythonでやれることは限界がある

入力データを用意するとか、設定を書いて実行ボタン押すとか、
最終結果を出力するとか、UI部分だけ使うには向いてる
2023/09/30(土) 23:05:22.23ID:bqOz9PdWM
またこの手の泣き言野郎か
今の開発者ってのは環境をお膳立てしてもらわないと何もできんのか?
設計さえちゃんとできていればテキストエディタとコマンドプロンプトで十分
2023/09/30(土) 23:09:50.32ID:XalifVE+0
C言語の頃は全てを記憶で書いただろうけど、
どうせ覚えられないしエディタがヒント出せばええやん、という方針で言語がデザインされるので、
装備ゼロで戦うのは大変よ
201デフォルトの名無しさん (ワッチョイ 2585-2pcI)
垢版 |
2023/09/30(土) 23:11:24.29ID:JXMtOmCl0
入力データがexcelファイルなんよな
2023/09/30(土) 23:27:08.82ID:bqOz9PdWM
>>201
Excel案件は最初からVBA一択
つらいのは適していない用途に使われて泣き言言われてるPythonだわ
203デフォルトの名無しさん (ワッチョイ 2585-2pcI)
垢版 |
2023/09/30(土) 23:39:17.77ID:JXMtOmCl0
>>202
VBAで書き始めてからそれは思いました
2023/09/30(土) 23:42:41.06ID:XalifVE+0
何をしてるのかは知らんけど
入力データだけ吸い取ったらもうexcelは閉じて、pythonで処理して、
結果だけexcelファイルに書き出すのが楽
2023/09/30(土) 23:42:39.73ID:yu70ioeQ0
CSVから読み込んで計算して上書きしてるよ
206デフォルトの名無しさん (ワッチョイ 2585-2pcI)
垢版 |
2023/09/30(土) 23:55:19.79ID:JXMtOmCl0
そういう事もしたりしてたけど、インプットがexcelファイルのみでファイルによってはデータにプロテクトかかってたりしてたから
結局VBAで処理するのが楽なんだろうなって感じでした
2023/10/01(日) 00:53:30.98ID:P28FwVlb0
マクロもパスワードロックして自分以外編集できないようにするのって大切よな
Pythonだと丸見えで編集されて動かなくなる件
2023/10/01(日) 02:02:26.24ID:+M66ZcTD0
半年もすればPython in Excelで書くのが当たり前になってそう
209デフォルトの名無しさん (ワッチョイ 2546-Q3QL)
垢版 |
2023/10/01(日) 09:45:50.70ID:sO86DvxC0
>>208
VBAは出来ないことが大杉だからね、クラス継承とか。
2023/10/01(日) 12:17:25.51ID:bcUAnMXT0
Python in Excelあっても全部任せられるわけじゃないんしょ
2023/10/01(日) 12:23:49.16ID:vEz6IuND0
あんま組み込んでもファイルをヒトにわたせんからな
2023/10/01(日) 12:24:20.33ID:n0Tp64cO0
セルに関数書く代わりにpythonで書くみたいな感じでしょ
マクロを置き換えるものではなかったような
213デフォルトの名無しさん (ワッチョイ 051b-voBv)
垢版 |
2023/10/01(日) 12:58:36.47ID:SOIhx71S0
いつの間にかVisual Pythonになって更にVisual Python.NETになる
2023/10/01(日) 13:33:03.77ID:o43+uB+s0
VBAは有償の開発ツールでも使わないとテストランナーもなければバージョンコントロールもめちゃくちゃやりにくい
Visual Studio使ってるならExcel-DNAやVSTO使ってなるべくVBAの量を減らしたほうが開発効率的に保守性的にも断然いいよ

ExcelをGUIをインタラクティブに使う必要がなくて入力データとして使うだけならPythonでも充分
2023/10/01(日) 14:01:56.09ID:72iWkL15a
パネルビューの信頼性と選択問題についてちょっと考えてみた

多分おおよそこんな感じだとおもう
若いほうがいいか、BBAがいいかはプロパティで編集する必要がある

https://i.imgur.com/lmD54ET.png
2023/10/01(日) 14:02:04.25ID:72iWkL15a
パネルビューの信頼性と選択問題についてちょっと考えてみた

多分おおよそこんな感じだとおもう
若いほうがいいか、BBAがいいかはプロパティで編集する必要がある

https://i.imgur.com/lmD54ET.png
2023/10/01(日) 14:02:28.46ID:72iWkL15a
パネルビューの信頼性と選択問題についてちょっと考えてみた

多分おおよそこんな感じだとおもう
若いほうがいいか、BBAがいいかはプロパティで編集する必要がある

https://i.imgur.com/lmD54ET.png
218デフォルトの名無しさん (ワッチョイ 4b9e-AYcZ)
垢版 |
2023/10/01(日) 14:50:51.48ID:SyN7rZqG0
>>213
IronPythonはどうなる?
2023/10/01(日) 18:59:05.62ID:PNwI3bEh0
IronPythonといえばJythonどうなったんだっけ?
2023/10/02(月) 16:48:55.66ID:YC0PCAgZ0
「UTF-8でエンコードされたバイト列」の文字列を、バイト列として扱い、
そのバイト列をデコードした結果を得たい、と思ってます

たとえば「鈴木」という文字列をUTF-8にエンコードすると
print("鈴木".encode("utf-8"))
b'\xe9\x88\xb4\xe6\x9c\xa8'
こんな風になるかと思います

ここで、文字列として"\xe9\x88\xb4\xe6\x9c\xa8"を用意し、
それをバイト列として扱ってデコードした結果である「鈴木」を、
変数resultに格納するための方法を教えてください

print(b"\xe9\x88\xb4\xe6\x9c\xa8".decode("utf-8"))
と、頭に「b」を置いて文字列を直接続ければ表示はできることは分かったのですが、
こうではなく、文字列は変数strとして与えたいです

str = "\xe9\x88\xb4\xe6\x9c\xa8"
result = bytes(str).decode("utf-8")
等とやってみましたが、うまくいきませんでした
2023/10/02(月) 17:15:45.40ID:KwMtPnpga
>>220
https://i.imgur.com/0kO0BFQ.jpg
2023/10/02(月) 17:32:06.38ID:YC0PCAgZ0
>>221
回答ありがとうございます

この場合、変数bは「b"\xe9\x88\xb4\xe6\x9c\xa8"」と表現される
バイト列になっているので、そのままデコードできるのだと認識してます

説明が難しくて申し訳ないのですが、
変数bが「"\xe9\x88\xb4\xe6\x9c\xa8"」という、頭にbのつかないテキストの
文字列となっており、その文字列を、バイト列に変換するか何かして、
UTF-8としてデコードした結果を得たいと思ってます
2023/10/02(月) 17:55:59.56ID:1Dl/aSKe0
print(str.encode('latin-1').decode("utf-8"))
224デフォルトの名無しさん (ワッチョイ 25a6-wXmr)
垢版 |
2023/10/02(月) 18:29:10.08ID:h+g/GQYs0
>>220
バイト列リテラル(b"...")を表した文字列を作って ast.literal_eval()
https://ideone.com/qgK6Nb
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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