Pythonのお勉強 Part75 (968レス)
Pythonのお勉強 Part75 http://mevius.5ch.net/test/read.cgi/tech/1743698824/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
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
796: デフォルトの名無しさん (ワッチョイ 8610-ZAtR) [sage] 2025/08/26(火) 07:53:15.97 ID:lpW4FrXI0 生産性の向上っていうのが誰視点なのかって話。 高階関数の実装者側は、そもそも渡される関数の副作用に対してできることは何もない(どんな副作用かも分からないんだから当然)のだから、元々「余計な心配にリソースを割く」こと自体がない。引数として渡される関数には副作用がないか、副作用を持つとしても高階関数の処理に影響は与えないという前提で書くだけでしょ。引数として副作用のあるlambdaを渡して、それが原因で高階関数の処理に影響を与えたら、それは呼び出し側が悪いってスタンスで書くしかない。 高階関数の呼び出し側は、特に高階関数のコードが読める状況なら(典型的には自分だけで書いている状況なら)、引数として渡す関数・lambdaに副作用があったとしても、それが高階関数の処理に影響を与えるか否かを判断できる。高階関数の処理に影響を与えない副作用がある関数・lambdaを与えるのは別に問題はないのではないか、それでも何か避けた方が良い固有の問題点があるのかどうかというのか792の疑問ね。 コードを読む人は、高階関数に引数として渡される関数・lambdaには副作用がないか、副作用を持つとしても高階関数の処理に影響は与えないという前提で読むだけ。 実際に副作用のあるlambdaを書くことはほとんどないけれど、780みたいな単純な代入処理はたまにlambdaで済ませたくなることもある。そういうときに、一般論とか教条主義的なスタンスを超えた問題が何があるのかなという疑問だったんだが。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/796
797: デフォルトの名無しさん (ワッチョイ 6a1a-uCg5) [] 2025/08/26(火) 09:39:12.77 ID:tZRcIfkk0 >>796 他人とちゃんと話し合って決めろよ http://mevius.5ch.net/test/read.cgi/tech/1743698824/797
798: デフォルトの名無しさん (ワッチョイ dd8d-hBFX) [sage] 2025/08/26(火) 09:58:03.54 ID:qtH/IdiV0 >>796 皆がお前のようにいちいち小難しいことを考えているわけではない、ってことだ。 一定以上のレベルのプログラマであればlambdaで副作用書いてるのを目にした時点で一般常識に照らして「こいつバカじゃないのか」という疑念を持つ。 お前のように細かいことを深く考えた上でやっているとは普通は思わない。 そしてバカを疑いながらのリーディングは通常よりも注意力を要し、結果的に時間がかかる、即ち可読性は低下する。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/798
799: デフォルトの名無しさん (ワッチョイ 6a1a-uCg5) [] 2025/08/26(火) 10:13:17.81 ID:tZRcIfkk0 >>796 は仕事じゃないんだろうな http://mevius.5ch.net/test/read.cgi/tech/1743698824/799
800: デフォルトの名無しさん (ワッチョイ a9f6-ut8q) [] 2025/08/26(火) 11:02:48.24 ID:GdDdRaCq0 800get http://mevius.5ch.net/test/read.cgi/tech/1743698824/800
801: デフォルトの名無しさん (ワッチョイ 7954-IRdO) [sage] 2025/08/28(木) 07:37:52.10 ID:yOq6T87r0 デフォルト名前空間付きタグがどうやっても取得できない http://mevius.5ch.net/test/read.cgi/tech/1743698824/801
802: デフォルトの名無しさん (ワッチョイ 29eb-ZAtR) [sage] 2025/08/29(金) 09:32:22.26 ID:sEZGPQSB0 dataclassは比較的新しいモジュールだけど、急速に普及した印象がある。namedtupleより分かりやすいので良い。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/802
803: デフォルトの名無しさん (ワッチョイ 4ad1-Y9fL) [] 2025/08/30(土) 18:55:38.52 ID:hbOtSRYd0 goやrustみたいな最初から型がある言語のほうが良かったなぁ(´・ω・`) http://mevius.5ch.net/test/read.cgi/tech/1743698824/803
804: デフォルトの名無しさん (ワッチョイ 7954-IRdO) [sage] 2025/08/30(土) 19:03:44.19 ID:qOwp6KvW0 むしろもっとperlみたいにゆるゆるな方が好み http://mevius.5ch.net/test/read.cgi/tech/1743698824/804
805: デフォルトの名無しさん (ワッチョイ c6b3-ZAtR) [sage] 2025/08/30(土) 19:07:15.61 ID:9+bLWO6W0 パフォーマンスの点と他者の書くコードに型指定を強制できないという点は仕方ないけれど、それ以外は、型で実現したいことって概ねPytnonでもできるようになってない? そうでもない? http://mevius.5ch.net/test/read.cgi/tech/1743698824/805
806: デフォルトの名無しさん (ワッチョイ ca02-NWkk) [sage] 2025/08/30(土) 19:57:54.62 ID:Inltr+l10 >>803 型を明記しないと、パッと見でわからないよね 実行してデバッグしないと http://mevius.5ch.net/test/read.cgi/tech/1743698824/806
807: デフォルトの名無しさん (ワッチョイ ca02-NWkk) [sage] 2025/08/30(土) 19:58:14.61 ID:Inltr+l10 >>806 ただ、 コンパイルしないのはラクだな http://mevius.5ch.net/test/read.cgi/tech/1743698824/807
808: デフォルトの名無しさん (ワッチョイ feeb-VoZ8) [sage] 2025/08/30(土) 20:59:13.62 ID:LdU2fVxg0 Pythonが出てきた頃はPerl全盛だったけどCGIとかP言語はもう死語だろうな http://mevius.5ch.net/test/read.cgi/tech/1743698824/808
809: デフォルトの名無しさん (ワッチョイ 132b-482X) [] 2025/08/31(日) 10:31:20.51 ID:GjhCFU0W0 python出てくる前はpython的な言語ってなんだたの? lisp? http://mevius.5ch.net/test/read.cgi/tech/1743698824/809
810: デフォルトの名無しさん (アウアウウー Sae7-8tKF) [] 2025/08/31(日) 10:48:14.97 ID:8dn8jVHLa 当時から既に広く使われていて最もpython的と言うならTcl/Tkだよ http://mevius.5ch.net/test/read.cgi/tech/1743698824/810
811: デフォルトの名無しさん (ワッチョイ 6f6c-O/rL) [sage] 2025/08/31(日) 20:58:12.37 ID:aib5LYmb0 >>809 シェルスクリプト もしくは rexx http://mevius.5ch.net/test/read.cgi/tech/1743698824/811
812: デフォルトの名無しさん (ワッチョイ 6f76-P3Uo) [] 2025/08/31(日) 21:10:05.20 ID:yW7onUoP0 立ち位置的にはPerlでしょ $とか%とかだりーなーとか思いつつ、ライブラリあるしみんな使ってるから使うかーって感じだった 今もオフサイドがとかうるせーなーとか思いつつ、結局Perlの時と同じでまあ言語なんかなんでもいいかに落ち着いて使ってる http://mevius.5ch.net/test/read.cgi/tech/1743698824/812
813: デフォルトの名無しさん (ワッチョイ 738e-Uwoy) [sage] 2025/08/31(日) 21:34:01.42 ID:1n2Iv0Hx0 シェルスクリプトの代わりにはならんかったよ 初期導入されてたのってRedHatくらいだったし Luaみたいな組み込み言語の側面はあったから Tcl/Tkはしっくりくる http://mevius.5ch.net/test/read.cgi/tech/1743698824/813
814: デフォルトの名無しさん (ワッチョイ a327-jRKo) [] 2025/08/31(日) 21:38:06.39 ID:Uf/mN+Cj0 >>809 シェルスクリプト VBScript http://mevius.5ch.net/test/read.cgi/tech/1743698824/814
815: デフォルトの名無しさん (ワッチョイ cfc5-O/rL) [] 2025/08/31(日) 21:38:24.47 ID:pHIfhBnQ0 awkだろにわかどもが http://mevius.5ch.net/test/read.cgi/tech/1743698824/815
816: デフォルトの名無しさん (ワッチョイ a327-jRKo) [] 2025/08/31(日) 21:39:09.43 ID:Uf/mN+Cj0 Pythonの言語仕様はクソだが、とりあえず無償だったのでいろんな製品に採用されただけ。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/816
817: デフォルトの名無しさん (ワッチョイ 6f6c-O/rL) [sage] 2025/08/31(日) 21:40:53.43 ID:aib5LYmb0 >>812 >>813 perlの前がなんだったかって話だぞ わかってんのか? ラリーウォール自体が話してるんだが なんだこいつらキチガイか? http://mevius.5ch.net/test/read.cgi/tech/1743698824/817
818: デフォルトの名無しさん (ワッチョイ a327-jRKo) [] 2025/08/31(日) 21:41:11.62 ID:Uf/mN+Cj0 >>815 それはシェルスクリプト内で使うもの なんでもawkでやるやつは昔から嫌われている。 いまでもawkで作り込まれていてメンテナンスがたいへんな業務システムがえるわ。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/818
819: デフォルトの名無しさん (ワッチョイ 6f6c-O/rL) [sage] 2025/08/31(日) 21:41:37.92 ID:aib5LYmb0 >>815 sed awk シェルスクリプトだな ちゃんと書くと http://mevius.5ch.net/test/read.cgi/tech/1743698824/819
820: デフォルトの名無しさん (ワッチョイ a327-jRKo) [] 2025/08/31(日) 21:43:14.03 ID:Uf/mN+Cj0 >>817 それならC言語だろうに スクリプト言語だとシェルスクリプト Pythonだって外部プログラムの呼び出しばかりでPython独自のライブラリは少ない。 http://mevius.5ch.net/test/read.cgi/tech/1743698824/820
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 148 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.016s