Pythonのお勉強 Part72
!extend:default:vvvvv:1000:1024 !extend:default:vvvvv:1000:1024 ↑スレ立てる毎に減るので、減ってたら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のお勉強 Part71 https://mevius.5ch.net/test/read.cgi/tech/1695168821/ VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured ●関連スレ● 自称初心者は↓へ 【まず1嫁】くだすれPython(超初心者用) その59 https://mevius.5ch.net/test/read.cgi/tech/1689241721/ 次スレの建立は>>985 が挑戦する。(980通過して24h後も落ちなくなった) ### END of TEMPLATE ### ? json.loads()で読み込んだすっごい深い階層のどこかにある特定のキーの中身を取り出すのはどうしたらいいだろう 前スレWindowsのショートカット(.lnk)はリンク先を呼び出すスクリプトだから 直接処理したいならLinuxと同じようにシンボリックリンクを作らないとね って書いたけどバイナリ解析して取り出でWshShortcut呼ぶ必要が無くなるな BeautifulSoupだと階層無視して検索とかできるけど、 あんな感じでキーは判ってるので構造に対して柔軟に取得したい 再帰で辞書かリストか判断しながら辿っていけばいいのは判るけど、 自分でいちいち書きたくない いいね globみたいに**で飛ばすのか リストで返ってくるのがちょっと意外だった 古典的な方法として正規表現があるけど それではだめなの? htmlのスクレイピングでも、こんなもん直接正規表現で抽出した方が早い、 という局面はよくあるけど、回り道して正攻法でやった方が結局うまく行く XPathを模したJSONPathってのがあって Python用のモジュールもあるからそれのが潰し効く Ruby なら、dig で、 配列はインデックスで、ハッシュはキーで指定できる require 'json' # 改行を削除する。削除しなくても同じ結果 json_str = <<'JSON'.delete( "\n" ) [{"あ":[{"い":1}, "x"]}] JSON p json_obj = JSON.parse( json_str ) #=> [{"あ"=>[{"い"=>1}, "x"]}] p json_obj.dig( 0 ) #=> {"あ"=>[{"い"=>1}, "x"]} p json_obj.dig( 0, "あ" ) #=> [{"い"=>1}, "x"] p json_obj.dig( 0, "あ", 0 ) #=> {"い"=>1} p json_obj.dig( 0, "あ", 0, "い" ) #=> 1 今からpyでGUIやるとしたら何がお勧め? ちなみに社内利用のツール作りたい PythonはGUIがとても弱い これだけ流行ってもPythonでゲーム作る人少ないでしょう GUIは簡単にやれるならやってみようと手を出したけど、 全然簡単じゃない上にやりたいのと違うのしかできない どうせ自分しか使わないならGUIにする必要もない ということで見限ってる >>17 ライブラリが弱いって話だから大いに関係ある 目指すものによる pygame(SDL)やEel(HTML)なんてのもあるし copilotすげーな もっと短くできない?って聞くと毎回短くなって勉強させてくれるわ pysimpleguIってデフォルトのフォントサイズ変えらんないの? いちいち設定するのめんどくせー UIが欲しい訳でもないんだよな 設定やら入力はファイルから読み込むとかの方が楽に決まってる 動いてる最中に現在のステータスを表示させたり、 オプションをリアルタイムで変更したりしたい CUIだと、コンソールにスクロールして表示されるのを目で追うとかになるし、 リアルタイムでの変更もできない list1がインデックスのリストで、その[0:2]の内容をインデックスとした list2の一部を取り出したい時はどう書いたらいい? >>26 >動いてる最中に現在のステータスを表示させたり、 >オプションをリアルタイムで変更したりしたい 両方ともCLIでもできるでしょ >>27 [list2[i] for i in list1[0:2]] どういう形で取り出したいかとか 取り出した後にどう使いたいかで適切な方法は変わる ああ、それだ どうやってもループ的になるのは避けられないんだな 1行で書けるというだけで def fill_rcsv(field, name, position): candidate = search(name, field) for position in candidate: fill_rcsv(field, name, position) 要素だけ書くとこんな感じの再帰呼出しで、 複数回呼ぶとうまくいかない for position in candidate[0:1]: みたいに1回だけにするとばっちり動く 再帰で何かが上書きされてるんじゃないかと疑ってるけど、 そんな筈は無いし、何がおかしいんだろう >>30 numpy使えば arr2[arr1[0:2]] >>31 何やりたいのか知らないけど引数のpositionが意味ないからそりゃ動かないだろうな map(lambda x: list2[x], list1) 実際には終了条件の為にrestという変数も渡してる fill_rcsv()の中でrest.pop(0)する 最初から空なら終了 呼び出しの時のrestを、rest.copy() にするだけで挙動が全然違う 再帰の時の引数にリストを渡した時の呼び出し元に対する影響がよく判らない >>36 いや再帰どうこうの以前に>>31 見ただけでなんか設計おかしいのがわかるでしょ candを計算するのにname, fieldしか使ってないのに 変数名positionをcandから取り出したやつで上書きしてイテレートしてる 副作用がばりばりあってそれでも想定通り動くコードなのだとしたらその部分だけ見せてもわかるわけないしどっちにせよおかしい 省いちゃったけど、positionはfieldを更新するのに使ってる ループが1重ならちゃんと動作するので、設計自体はおかしくないんだけど、 2回目以降を呼ぶ時に前回の影響が何故か残ってるとしか思えない >>36 >呼び出しの時のrestを、rest.copy() にするだけで挙動が全然違う そりゃそうでしょ >再帰の時の引数にリストを渡した時の呼び出し元に対する影響がよく判らない 再帰関係ないじゃん 引数にリストを渡した時の呼び出し元に対する影響がよく判らないのに 設計自体がおかしくないと思うのが間違い そりゃそうでしょ、というのが全く実感できないんだよな なんで動かないのか不思議で仕方ない その根拠を知りたくて質問してるのに、 そんなの動かないよーだけでは同類 質問の仕方でpython弱いのが分かるレベルなのに 開き直って甘えてんなあ teratailとかでそんな聞き方したらぶち殺されるぞ あまりスレ民の優しさに甘えるなよ Elixir の再帰では、リストの要素をすべて走査したら終了する。 引数には、accumulator・蓄積変数を持っている リストを、[ head | tail ] に分解して、headを処理する。 tailを引数に渡して再帰する 終了条件は、tailが空[ ]になった時 [1, 2, 3] → [1,[2,3]] 1を処理 [2,3] → [2, [3]] 2を処理 [3] → [3, []] 3を処理 [] → 終了 再帰呼び出しがうまくいきません ・終了条件のための引数restは省略しています ・引数positionの参照は省略しています ・引数fieldの更新も省略しています ・引数positionの算出も省略 重要な部分が省略されてて不具合なんて分かるわけがない Ruby のオブジェクトは、shallow copy だから、参照しかコピーされない。 内側のオブジェクトはコピーされずに、同一オブジェクトを使い回す deep copy は難しい。 Python もそうなのかも? 添削を依頼してる訳じゃないんだよな 400行のコード貼ったって誰も読まない ループじゃ無ければ動く、という部分をとっかかりに はまりポイントが思いつく人だけ反応してくれればいい 今後もプログラミング続けるなら、まず質問する時に、後出し後出しで事故ってるとこをどんどん出すのはやめたほうがいい 教える側が普通に想像する事態について丁寧に説明しても、あとからあとから「いや、実はこうなんで」って出てくるなら、 どんな初心者の変なコードにも対応できる一般論や抽象的な話しかできなくなってしまう そうなると有意義なアドバイスは難しい それとは別に、ごくまともな指摘をもらっておいて いや俺はわかってる、設計はあってる、でもなんかおかしい、俺は悪くない みたいなことを言わないほうがいい ムカつくし、単に嘘をついてるから 断片的な話だけで完全に設計間違ってることがわかるレベルで間違ってる 結論としては、deepcopy()で解決した ピンと来た人いるかな? >ループが1重ならちゃんと動作するので、設計自体はおかしくないんだけど、 >2回目以降を呼ぶ時に前回の影響が何故か残ってるとしか思えない ここジワるな リストをコピーして渡したいだけなのに、別モジュールのimportまで要ると思わんやん ぐぐって見つかる再帰呼び出しの例は、再帰の魔法みたいな部分を強調したいので、 そんな面倒くさいケースは紹介しない list.copy()というそれっぽいものが用意されていて、 大抵はそれでちゃんと別物として扱ってくれるので疑ってなかったのが敗因 浅いコピーと深いコピーの違いはぶっちゃけまだよく判ってない ここまでで二重配列って説明一切出てないけどどうやってバグらせたかはわかるよ そもそも再帰なのに入れ子のミュータブルをdeepcopyで渡さないといけない時点で書き方確実に間違ってるからどうでもいい 再帰関数の中でディープコピーとは ヘビーなモノ作ってるねぇ >>53 >浅いコピーと深いコピーの違いはぶっちゃけまだよく判ってない もう答え出てるやん 荒っぽく説明すると デスクトップのショートカットだけコピーするのが浅いコピー ショートカットの中身までコピーするのが深いコピー 1. listを渡す 2. list.copy()した結果を渡す(shallow copy) 3. list.deepcopy()した結果を渡す(deep copy) ショートカットだけコピーするのは1じゃないか? だろうね 再帰でイミュータブル渡すならまずコピーでなく参照を渡して済むことがほとんどだし そうじゃないならリストで渡さずタプルにして値で渡せばいい あらゆる意味で変 >>26 遅レスだけどWebで良いやん streamlitみたいなのでサクッと作れば良くね? >>61 これ もうネイティブアプリの時代じゃないんだよな webなのかー ブラウザでやること自体のメリットはあんまり感じないけど、 ハードルが低いなら巻かれてみよう 俺はネイティブ派だけどね やはり速度的に全然違うし ただプログラミングスタイルとしてネイティブは終わってる 入力と出力の部品が一揃いあって使い慣れたものが目の前にあるじゃろ という話なんだろうな いろんなプラットフォームを意識する必要もない 組み込みとか、金融とか、PGの仕事のジャンルという大きなくくりの一つとして、 webがあるんだよな どこかの会社のホームページ作る仕事がそんなにあるの? という話でもないらしい 何でもかんでもWebで作ろうとするのも何でもかんでもネイティブで作ろうとするのと同類 redditかなんかでwebはゴールデンハンマーじゃないって言ってる人いたな pythonでスクレイピングを行うvbaを起動するとTimeoutになってしまうんだけど、どうしたいいでしょうか。 ただ、VBA単体で実行するとブラウザは起動します。 エラー文:TimeoutError The driver failed to open listening port 127.0.0.1:54568 within 10s ■python構文 app = win32com.client.Dispatch("Excel.Application") app.Visible = 1 app.Workbooks.Open(Filename=r"C:\XXX\XXX\XXX\XXX.xlsm") app.Application.Run('OpenScrping02') ■VBA構文 Dim Driver As New ChromeDriver 'Dim Driver As New Selenium.ChromeDriver Dim XPath As String Dim element As String Dim FWFlag As Boolean Dim myBy As New By Dim tmp As String Driver.Get "chrome://settings/defaultBrowser" ↑でエラー文が発生します ここでnuitka知って使ってみたんだけど、作ったファイルがもれなくウイルス判定されちゃう。 どしたらいい? exe化しなきゃ良いんじゃね 寧ろexe化って何でするの? だからさstreamlitみたいなのでサクッとWebアプリ化して自社鯖なりクラウドにおいてURL叩くだけで使わせれば良いじゃん わざわざexe化して配布して回るの? 修正とかしたらまた配り歩くの? >>71 コンパイル中にウィルス判定くらうからびびるね raw=pandas.DataFrame({… gb=raw.groupby(['name1','name2']) gbmaxts=raw.loc[gb['totalScore'].idxmax(),:] とやって、グループごとのtotalScore最大値の行を抜き出したいのですが、 問題はtotalScoreが重複した場合、どれを抜き出すか選べないのです。 score2というのがあって、重複した場合それの最大値で抜き出したいのですが、 どうやって記述すればいいでしょうか? >>70 外部のスクリプトからExcelを開いたときはアドインとかライブラリへの参照が自動で追加されてないからとか? エラーの内容がちょっと違う気もするけど念のためVBAで追加するようなコードを書いてみては >>77 もっといいやり方がありそうだけど gb=raw.groupby(['name1','name2’]).apply(lambda x: x.sort_values([“totalScore”, “score2”], ascending=False))とか windowsならbatかpslでpython3を叩く自動スクリプト組んで配布すりゃよくね?初回起動時はポータブルなpythonをダウンロードするようにしてさ 今時の企業PCでexeファイルを許可なしでインスコ出来る事有る? 大抵は監視ソフト入っててインスコ出来ないようになってるよね システム部門に申請して云々って手続きが必要とかさ >>78 ありがとうございます。他を調べても同様のケースがないため、大変助かります。 可能でしたら、外部スクリプトから実行する際の構文などをご教示いただけないでしょうか。 また、改善するか不明ですが、現状のPythonでブック開く・マクロ実行までを、Pythonでブック開くまでにしてそれ以降はOpenイベントでマクロを実行する方法を試してみようと思います。 print('' in 'abc') はTrueになる print('abc'.index('')) も0になって、 print('abc'.index('a')) と区別が付かない その文字が含まれるかどうかのテストに''ならFalseになるように 書くにはどうしたらいいだろう そういう方針なのかと思ったら、 print('' in {'a', 'b', 'c'}) print(None in {'a', 'b', 'c'}) こういうのはちゃんとFalseなんだよな まず 'ab' in 'abc' をその集合表記で書いたらどうなるか考えてみるべきだな pythonではそうなってますで終わりと言われればそれまでだが 包含か一致かの違いと考えれば辻褄が合うような print('' in 'abc') for c in 'abc': print(c == '') print('' in ['a', 'b', 'c']) for c in ['a', 'b', 'c']: print(c == '') どちらもイテレータの中身のチェック 一番上だけTrue len('') len('a') len('ab') これは同じか? in演算子について誤解があるようだな print('ab' in 'abc') を書いてみてわからなかったらあきらメロン 不便だし他と不整合だしメリットが見つからないし覚えにくい 最初にそうしちゃったから今更変えられないだけに見える >>96 勘違いしてるが、別に君のために開発された言語ではないよ。 君が言語に合わせるか、君が別の言語に移るかだ。 毎度毎度、知能が足らないのか? >>92 知らんかった、、 forの場合、in後の反復オブジェクトをiter化してStopIterationが出ると止めてるらしいので in演算子後の文字列をiter化すれば同じ結果になるだろうけど 文字列だと「なにもない」を部分であるとみなして、 集合は「なにもない」は部分ではないとする わざわざそうするのは、こういう処理の時にシンプルに書けて合理的でしょ という例が思い浮かばないんだよな 1文字が含まれるかどうか調べるときは1文字でin演算すればいい 部分列を高速に検索かけられる分できること増えてるだけじゃん 言語仕様に文句を言っていいのは、不必要に文法を複雑にしてるor性能を落としてるときだ 文字列検索ほど頻出なものに不平を言うのは想像力も経験も知恵も足りてないだけ つまり、変なのは判ってるし、本当はFalseを返したかったけど、 アルゴリズム的にTrueにした方が高速に検索できるということかな 空で検索するのって、そんなにコストかかるか? 最初にFalseで落とすだけな気がするけど リストや文字列の+、 *は、数の+、*と動きが全くちゃうでしょ でも同じ演算子を使う inの動きが変わるのも、それと実装の仕組みは同じ +、*は盲目で受け入れてこれには文句言うのは、君にプログラミングの才能がない証拠 え、こわい > つまり、変なのは判ってるし ここが盲目的ってことよ その質問が、もう頭悪い '' in 任意の文字列 は君の定義なら常にFalseでPythonの定義なら常にTrueなんだからどっちでも計算量O(1) 文字列照合のアルゴリズム1つも知らないでしょ 周りがおかしいんじゃなく、自分がおかしいと気づいて まあ、そんなのはどうでもよくて ちゃんと意味があってそうなってるんだから っぽいことを口々に言ってるけど、誰も具体的に説明しない 疑問を持ってはいけない信者にしか見えない まず、''がどの文字列のsubstringでもあることは納得している? >>84 workbook = app.Workbooks.Open(workbook_path) workbook.VBProject.References.AddFromFile(library_path) #ライブラリ参照の追加 app.AddIns.Add(addin_path).Installed = True #アドインの追加 >>109 ヒント出してる人はいるだろ。疑問を持っちゃいけないってんじゃなくて自分で考えてほしいんだよ。 print([] < ['a', 'b', 'c']) print(set() < {'a', 'b', 'c'}) これはどちらもTrue 存在と包含は区別されている 文字列に対しては、部分文字列が存在するか、ではなく 部分文字列が包含されているか、という判断になっている 数学では、空集合は全ての全ての集合の部分集合と定義されている pythonはそれを何の気なしに真似しただけで、 コーディング上のメリットは多分ない 家にあるバームクーヘン捨てた方が良い? このままだと全部食ってしまう ゴミ箱に入れて捨ててきた方が良いかな 痩せたいんだ >>109 「話を逸らすなよ」から「そんなのはどうでもよくて」って頭おかしいのかな 君は馬鹿でプログラミングに向いてないからやめたほうがいいと思うよ 何故 'abc' でforループ回して出てくる 'a' でさらにforループ回せることは気にならなかったのかな。 for c in 'a': print(c) って書いてみな その考えで言うとまず 'a' in 'abc' が判定できる時点でおかしいはず 'a'が配列なんだからね 君は論理的思考が苦手。論理的な人が文句をいうならそこに気付くはず 初心者が間違った思い込みを持って、現実で痛い目見てベソをかいてるだけ 2は、シバン(1行目)をどう記述するといいの? 1 実行できる。(前提) $ cat hello.py #!/usr/bin/python3 print('こんにちは') $ ./hello.py こんにちは 2 エラーになる。但しコマンドラインからは実行できる。 $ cat trace.py #!/usr/bin/python3 -m trace --trace print('こんにちは') $ ./trace.py /usr/bin/python3: No module named trace --trace $ /usr/bin/python3 -m trace --trace trace.py こんにちは $ >>119 なるほど。ありまとう。 $ ./env-s.py --- modulename: env-s, funcname: <module> env-s.py(3): print('おはよう') おはよう $ head -1 env-s.py #!/usr/bin/env -S /usr/bin/python3 -m trace --trace >>1 データを作りたいのだが、 配列の応用のページはないですか、 辞書と組み合わせて作るのかな、、、 もうちょっと具体的に例出して サンプルがほしいなら適度に複雑なjsonファイルを読み込んでマッピングされた構造を見れば、Pythonコンテナ型を組み合わせたデータの参考になるかもね /usr/bin/python3 を単に、python3 と書けないの? WSL2, Linux なら、 Ruby は、anyenv で入れた which ruby /home/ユーザー名/.anyenv/envs/rbenv/shims/ruby which python3 /usr/bin/python3 ファイルの形式 file /usr/bin/python3 /usr/bin/python3: symbolic link to python3.6 file `which python` /usr/bin/python: symbolic link to python2.7 file `which python2` /usr/bin/python2: symbolic link to python2.7 file `which python3` /usr/bin/python3: symbolic link to python3.6 readlink -f /usr/bin/python3 /usr/bin/python3.6 >>123 書けない。 $ head -1 seabang.py #!python3 -m trace --trace $ ./seabang.py bash: ./seabang.py: 実行できません: 必要なファイルがありません またコマンドラインで、 > $ /usr/bin/python3 -m trace --trace trace.py と敢えてフルパスで書いたのは、コマンドサーチパスによって、 /usr/local/bin/python3 や、 /opt/bin/python3 をつかまされたのでなく、 > #!/usr/bin/python3 -m trace --trace と同じものである事を明示した。 酒飲みながらプログラムしたらダメだな、、、 完成しないのはともかく、これまで作ったプログラムもグチャグチャになった >>123 alias python=/usr/local/bin/python3 shebang解釈するのはOS シェルのaliasなんて知ったこっちゃない lru_cacheを引数がリストの関数にうまく使えないものか SQLAlchemy 2.0.x リレーションシップ周りでめっちゃエラー出まくる 一応未だに更新のある1.4.x系の最新版で安定 速度とか関係あるのかわからないけど2.0.xはもう諦めた・・ FastAPIで画像を返す方法です 以下のurlをコピペしましまたが、/image/jpgにアクセスすると、サーバー側に AttributeError: 'tuple' object has no attribute 'tobytes' とエラーが出て画像が表示されません どこがおかしいんでしょうか? ttps://qiita.com/chikiku/items/e73ae8ff281c48e7f361 >>135 この部分を byte_image = cv2.imencode(".jpg", im) これに _, byte_image = cv2.imencode(".jpg", im) >>136 どうもありがとうございます!うまくいきました! 「_, 」はなにを表しているんでしょうか? >>135 アンパック 例えば ary = [11,22,33] a=ary[0] b=ary[1] c=ary[2] print(a,b,c) を d,e,f=ary print(d,e,f) みたいに書ける >>138 どうもありがとうございます! 何かを省略する方法っぽい事はなんとなく分かりましたがそれ以上は全くわかりませんでした。。。😢 3.12.1でlen(list[str])=1270のlenを大幅に超える[8950:]でスライスすると ランタイムごとコケるバグ見つけた 詳しい条件わからん バグ報告任せた 訂正&メモ >>134 1.4.51だとなぜか1ペアしかリレーションシップできない 1.4.35だとすべて完璧 原因はわからん アンパックすぐバグる やっぱり戻り値は1つで複数要るならclassにするべき どうバグるのか知りたいが 最近は気軽にタプルでエラーも返すのも多いね >>138 「_, 」と、(1)アンダースコア(2)カンマ(3)空白の説明を求められたのに、(2)しか説明していないじゃないか。一を聞いて1/3を知る病気ならともかく、そうじゃないなら真面目にやりたまえ。 戻り値の3番目を使って、とかやってるうちに、 設計変更で4番目に変わったりする 引数も順序に依存する実装は危険でこれは名前で渡せば済む pythonはdictionary型の扱いが超簡単だから あえてリストやタプル使うメリットは少ない でも辞書はいちいち新規かチェックして新規なら空要素自前で追加しないとエラーになる リストもタプルも使うべきところがある 位置引数とキーワード引数の使い分けも同じ話 常にどちらか一方が優れてるわけではない あるのは知ってるけど、やっぱり使わない方がいいという結論になった autovivificationは便利すぎて人間の手に余る simplenote のAPIを使いたいと思っています。 PIPでのインストールはできたのですが、 その先に進めずにいます。 特定のノートの表示、或いは書き込みのサンプルって どこかにありませんでしょうか。 >>152 様、 早々のレスありがとうございます。上のサイトは確認しました。 ただ、まだそれを見て理解できるレベルに無い為、サンプルがあればなぁと思った次第です。 下のサイトはもう少し詳しい情報があるようなので、読んでみてすすめてみたいと思います。 モザイクを検出して、透過に塗りつぶして、別の画像に貼り付けるプログラムを 作ったので良かったら遊びにきて下さい wikiwiki 同人誌同人ゲーム無修正化差し替え備忘録まとめ Wiki* https://wikiwiki.jp/mozanashi/ 左のメニューのところにプログラムを貼り付けてあります Pythonやってるのって韓国人ばかりだからな。 Pythonのことは韓国人に教えてもらうのがいいね! スレ主も韓国人だよ! よろしくね! マンセー! DNCLとかCASLとか? 環境から設計、構築せんとなにもできんけど 真の玄人は自作言語で遊ぶのかも知れんね そして誰にも使ってもらえないうえにライブラリも作ってもらえない孤独と戦い続ける自分に酔う 自作言語はみんな作るでしょ たとえば、改行で区切られたテキストファイルがいくつかあって、 それらのandをとりたいとか、orをとりたいとか、 引き算したいとかの要求があって それぞれ別に演算したものを最後に結合するとか複雑になってくると、 簡易言語にして処理させた方が楽だし間違わない >>163 それsedやawkとかを駆使するんじゃだめなん? sedではさすがに無理だろうな awkを駆使するのもperlを駆使するのもpythonを駆使するのもだいたい同じ Pythonやってるのは朝鮮人だよ。 朝鮮民族は優秀だからね。 マンセー! Ubuntuでpythonの仮想環境を作ってやろうと、virtualenvwrapperインストールしてみたんだけど、python2.7の仮想環境作れない python3の仮想環境は作れるのになんでなんだよ パズル解かせるツール作ったけど、時間かかる 手軽にコンパイルして1000倍くらい高速化できないかな 古い本だとpython2だから仮想環境作りたいのに 手直しでpython3のコードにするしかないのか 古いCPythonはOSが仮想じゃないと動かすのイヤだけど IronPythonつかうのは? >>171 PyPy バージョンよって剰余演算子の挙動が違う? -1%3とか EXEを作るのにPyinstallerを単純に使うとDefenderに引っかかる上にできたEXEをマルウェアと誤認識する。 EXEを作るのに何かいい方法は無いですか? beautifulsoup使うとpylanceに怒られて真っ赤になるのが悩みなんですが isinstance使わないでアノテーションで上手く誤魔化す方法って無いんですかね Pythonが遅いところはPythonで処理せずC言語等で書かれた速いライブラリで処理するので問題にならない PythonをオワコンにするはずのJuliaがほぼ行きがけてます Julia全く人気出ないよなー 悪くない言語だけどわざわざ乗り換えるほどではないというね 誰かがライブラリ作ってくれるのを待つのではなく、 時間がかかると判ってる部分を自力でCで書いて高速化するハードルが低いといいのに あるべき進化の方向じゃない気がするけど、結局そういうのが楽で速い いまどきの言語でCブリッジ書きにくいって稀 速度だけがネックならCodon, PyPy, Cythonとか使えばええし GIL撤廃とmojoの完成でjulia等は完全あの世逝き ぶっちゃけmojoはjuliaとやってることは同じ juliaのシンタックスをpythonして作り直そうとしてるのがmojo CodonとかPyPyとかnumbaは終わるよ mojoが完成したら >>194 DecimalとかMpmathも高速化する? なんか最近頭の中にインタープリタでもできたのか知らないが 字句解析と構文解析と意味解析が自然にできるようになった。 >>168 バージョン管理して共存する方法あるでしょ。 >>198 その方法がわかんねって意味で書いたんだよ メインのpythonの環境がpython3.11だったからこいつにvirtualenvwrapper入れたんだけど、ネットで調べた方法のようにmkvirtualenvで、python2指定してもエラーでて仮想環境作れない python3なら作れるんだけど ネットで調べたとあるけどマニュアルか公式サイトは先に読んだの? ライブラリの集合を切り替えるのであってPython本体を切り替えるものではないよ >>197 プログラム言語の字句解析と構文解析と意味解析ができないと、プログラムを組めないでしょ。 >>201 実行したコマンドとどんなエラーが出ているかを書かないと参考意見も言えないよ。 >>197 ある日急にニューロン繋がって分からなかったものが分かるようになるよな 脳みそって不思議 3.10から実行速度向上って見たけど、あんまり変わらない気がした もともと速度欲しいなら自分でCython書けよって方針だろ すみません めっちゃ初心者なんですけど勉強でWEBアプリをM1 Macで作りたいです フレームワーク?はDjango使おうと思うんですが多機能なので小規模開発にはかえって向かないみたいなのをみましたがどうなんでしょうか? またIDEはVSCで良いですかね? ドキュメントは検索ではなかなか欲しい情報に辿り着けないので本を買おうかと思います。 (スクールなり行けるのが一番でしょうが…) Ruby on Rails 以外をやっても無駄 フレームワークの米国年収は、 Rails : 9 万ドル Django : 6 Laravel : 3.8 筑波大学でも使っている、Railsチュートリアルのサイトで、 古いRails 5 なら、無料で読める。 ただ大規模すぎる。 未経験者が学ぶ、プロの転職用 だからSinatra で、MVC の構造だけを学んだりする import email.policy e = email.policy.EmailMessage() print(type(e)) これをVSCodeで書くと補完が効かない上にmypyで Module has no attribute "EmailMessage" って出るんですがなぜでしょうか? 標準ライブラリのpolicy.pyでは from email.message import EmailMessage していますし実際上記のコードはエラーなく実行できます いま自作のライブラリでは内部でimportしているモジュールの隠ぺいのために __init__.pyで公開APIだけ__all__に入れて実装ファイルは先頭にアンダースコアをつけています 自作モジュールでは__all__に公開APIだけを書いても非公開部分まで補完候補に出てきました email.policyと同じ要領でツールの補完から隠ぺいできるなら採用したいのですがどうすればいいですか? >>1 p = [29, 30, 31, 32, 33, 34, 35, 36, 37] q = [31, 32, 33, 34, 35, 36, 37, 38, 39] r = [ [29,31], [30,32],,,] としたい、 AIに聞いたがわかってもらえない、、、 >>214 そこに聞いたのだが、、、 ありがとう、 複数の配列から、各要素を取り出すのは、 Ruby では、zip を使う ary_1 = [ 1, 2, 3 ] ary_2 = %w(a b c) res = [ ] ary_1.zip( ary_2 ){ |num, text| res.push [num, text] } p res #=> [[1, "a"], [2, "b"], [3, "c"]] いっつもコードが冗長だし linter(RuboCop)もつかったことなさそうだし いろいろ不憫 ルビ夫のPCはgem以外ネットに繋がらない仕様にしてしまえ 無関係なリストから順に取り出して組み合わせることなんか無いしな それは本来関係あるペアを別のリストに入れてしまったことがそもそもの間違い r[i].pとr[i].qとして取り出せるように設計しておくのが正解 VSCodeで表示される関数等の説明の吹き出しが、Colaboratoryを使ってる時より少ないんだけどさ これってどうすれば同等に表示されるようになるの? 初心者すぎて何を聞いたらいいのかもよくわかんないんで、どうかエスパーの人教えて!!! なんかいつのまにかVSCodeのインテリセンスおかしくない? ドットからのよく分からない候補が先頭にでる 俺はここ何日かvscodeが重くて困ってる メソッドとか関数書くときに固まる 特にread_csvとか完全に固まる なんで日本人のIT関係の人って冷たい人が多いんですか? プログラム職業にしてる人で性格のいい人にあったことがないです じぶんのミジンコみたいな性格は置いとくと 見識が広くておおらかな人が多い印象やわ いい人というのは225にとって都合のいい人であって そんな都合なんて知らねーよって話だろうな。 上から物を言ってくる人間は多いよね 淡々と答えれば良いものを一言二言多い まあ、こんなところでしか威張れないからなんだろうけど 他人の事を検索エンジン程度にしか考えていない人に対しては塩だな。 しかしそのほうが本人のためであったりする。 pythonからスマホゲームとか作れる言語に乗り換えるとしたら何がいいの? dart(flutter)? 得意言語で書きたいんじゃなくて乗り換えるならネイティブでいいんでは? ターゲット環境を理解するコストの方が高いから言語なんてついでに習得できる C#はMS-Windowsでしか使えない言語ちゃうの? C# の.NET Core のASP.NET はサーバーサイド界隈でよう聞くぞ >>238 C#の C++部分が動くだけちゃうの? C++をパクって COMだか .Netだかに対応させたんちゃうの? まず言語を選ぶんじゃなくて動作環境、開発環境やエンジンを選んでそこから適した言語が絞られてくるんじゃね 言語は手段であって目的が先にありきだよ プログラムとか教える人がことごとくWindows嫌いなのはなんでなんだろう >>249 言いたい事は分かるけどその目的の為に言語の熟練度が関係するとか有るじゃん お前さんの言う様な感じで決まるのって要は「プログラムなんて誰でも出来る」って言ってる技術知らないバカな経営者と一緒やん >>250 せやろか? クライアントとしては特になにも思わない サーバお前はダメだ! windows以外の何かが好きなだけでしょ 選択肢はlinuxとmacの2つしか無いが windowsのコマンドと改行コードと文字コードが嫌いだったなぁ 15年近く経った今はもう慣れたけど 行セパレータじゃないんだよな テレタイプの制御コードでしかない その通りの用途で使われたことあるんだろうか >>251 設計がガチガチのウォーターフォールだと 末端のPGは誰でも出来るぞ 昔のWindowsならともかく現行のはWSLで簡単にLinux/Ubuntu環境を作れるから便利になった 最近C#がまた注目されるようになったのは似たC#とよく似たJavaがOracle問題で自滅しかけたからかなあ サーバーサイドならJava/Kotlin、C#、Go、Rustのどれを使うか決めてからフレームワークを選んでやる ゲームやりたいなら強力な3DレンダリングエンジンフレームワークのUnity、UnrealEngine、Godotのどれを使うか決めてから言語を選んでやる C++プログラマーだが、 なんでPythonのclassコンストラクタって、 selfって引数あるの? perlのオブジェクト指向化を見てるとselfがあるのはとっても自然 >>258 後方互換のため pythonは最初はオブジェクト指向機能はなかった グイドは後付けでオブジェクト指向をどう実現するか考えた その結果第一引数に明示的にレシーバー(メソッドを呼び出すオブジェクト)をselfとして渡すことで 通常の関数呼び出しと差別化する案を思いついた >>260 んー だとしても特殊メソッドは、__XXXXXX__って感じでダブルアンダースコアで差別化されてるので、 selfがある理由がよくわかんない… C++プログラマー的からすると… 今頃になって気がついたけど、IDLEってi=1+1って打っても半スペが自動で入らないんだな IDLEみたいに軽くて自動で半スペが入る奴ってある? >>261 名前解決の拡張が前提にあるけど selfを引数で渡すことで従来の関数処理そのままでメソッドが実現できてる いまとなってはメソッド呼び出しかどうかランタイムで知れるので 言わんとしてることはわかる >>261 thisポインタを第1引数に取ってる感じ じゃないとインスタンス空間に入らない。 ダンダーメソッドは オペランドのオーバーロードと同じ 純粋仮想関数はインターフェース使う感じ 整数のリストは std::vector <int> とかだけど pythonはなんでもいける レジスタ長指定するような処理命令書かないのならデフォルトのintで問題ない 厳密に型指定した整数値扱うならnumpyやら使ってもok >>265 うん、selfはthisと同様だけど、不要なのでは? って疑問。 試行錯誤の名残りって感じ? 暗黙的な多重継承だからだよ 明示するためにやってる感じ objectクラスに含めるなら…と試してみるとわかると思う ちなみにここまで全部勘で言ってるだけだから詳しくはちゃんと確認するんやで。 selfはpythonの美しくない部分の一つではありそう せめて省略して.xyzとかで書けんものかなあ >>268 C++とかのthisはキーワードで明示的に引数として渡さなくても thisを使えばインスタンスにアクセスできるように作られてる Pythonのselfはキーワードではなく名前は何でもよく __init__などの第一引数で渡されるものがインスタンスへの参照というルールしかないので 引数にselfがないとメソッド内でインスタンスへのアクセスができない それは知ってて、でもなんでそういう設計なの?という疑問にみえるが メソッドと関数を別物として扱うか単なる専用関数と見るかの違い ルールが2つあるより1つの方がシンプル selfがあるからこそ美しいだろーがよお 別にcppをディスるわけじゃあないけどさ ディスポインタって(笑) ->ってプログラマよりも設計っぽくて(笑) >>263 メソッド内に関数も定義できるからメソッドと同じ名前の関数があった場合、どちらを呼び出して良いかルール付けが必要だしね selfがあればスッキリ >>225 関係ないスレに愚痴書き込むようなやつだから冷たくされてるだけだろ IT関係なくみんなから冷たくされてるのがわかんないかな? まぁJavaとかC#だとメソッドしかないから それら上がりはメソッドと関数が両立してるpythonには違和感あるだろうな Cがアセンブラを意識しないといけないように pythonもやっぱりCを意識する必要があって より抽象化された言語でも表層しか知らないと使えない >>273 、>>274 うん、で、 そのselfは引数としては不要では? って疑問。 存在する理由は? 変数名が省略されたらsyntax errorとせずにselfが省略されたと見なす なんてルールを導入したら混乱とバグが増えるだけ >>283 ありがとう。 最初にそこ見ればよかったw でも、「第二」の説明がよくわからなかった… >>285 それperl6で見たな .から始まると現在のコンテキストのselfが勝手に解釈される そもそもselfは予約語じゃないしな nervと書いても通る これが 0 1 を返す理由が分からない False,Trueじゃないの? def num(value): return value value1=num(0) and num(1) and num(2) value2=num(0) or num(1) or num(2) print(value1, value2) value1=num(0) != 0 and num(1) != 0 and num(2) != 0 value2=num(0) != 0 or num(1) != 0 or num(2) != 0 なら期待通り >>291 なんで複雑にしたがるかわからんが >>> 0 and 1 and 2 0 >>> 0 or 1 or 2 1 ってことだよね https://docs.python.org/ja/3/reference/expressions.html#boolean-operations だからこうする必要がある >>> bool(0) and bool(1) and bool(2) False >>291 https://docs.python.org/ja/3/reference/expressions.html#boolean-operations > 式 x and y は、まず x を評価します; x が偽なら x の値を返します; それ以外の場合には、 y を評価した結果値を返します。 > 式 x or y は、まず x を評価します; x が真なら x の値を返します; それ以外の場合には、 y を評価した結果値を返します。 > なお、 and も or も、返す値を True や False に制限せず、最後に評価した引数を返します。 ブール演算だけど、TrueやFalseを返すわけじゃない >>293 なんでと言われてもPython試験の問題集にのってたんで TrueとFalseだけを返す仕様でも殆ど困らないよな result = check() or error_process() みたいに、評価したりしなかったりする処理が短く書けるけど、 それは果たしてpython的なのか 結局ライセンス意識せずに使えるGUIライブラリってtkぐらいか? 商用ダメならtkにするよね でも作るのはSimpleが楽だからSimpleで作ったのをGPTでTKにしてもらうわ Tkまで戻らなくてもwxPythonとかあるやん 有象無象がほとんどだろうけどPyPI漁ってみては PySimpleGUIって趣味アプリ公開で金取らないなら無償なんか? いまいちわかりにくい 何かあった時のリスク高いからもう使えないな Qtとかもそうなんだけど難癖つけられたら詰むし 何でこの手のGUI使うのか俺には理解出来ない StreamlitとかWebのUIで良いじゃん 商用ってツール作って売ってお金貰うってことだよね。 社内利用ツールって商用じゃないよね? guiならtk1択か simplegui学習するくらいの時間でtkも学習出来るよう感じだしな 何しろ標準ライブラリだからコスパが良い 過去に作ったやつをtkにして動くようにしたけど、やっぱ見た目が古いなぁ customtkinterにしてみようかな 配布する目的だとどれもライセンス問題が付きまとうのが本当に面倒 flet良さそうだけどまだ発展途上感強し flet良いよな asyncアプリとしても作れるしかなりモダンな作りだ 安定性とか度外視すればこれ一択だろう >>312 ネイティブっていうけど、GUIのネイティブ感出したいならそれぞれのOSの GUI書くのに適した言語を多少は学ばないと意味なくない? GUIの自由度は無いけど洗練されててやりたいことが大抵できるようなのでいい へーfletなんてあるんだね。 勉強してみる。ありがとう。 listboxがないからchatgptに聞いたらTkinter,PyQt,wxPython使えって言われたw とりあえずchipで代用しようと思う 見た目ゴミで良いからとにかく無料で作りたい tk 多少覚えること多くても良いからしっかり作りたい kivy、PySimpleGUI 実績あるクロスプラットフォームのライブラリを使いたい PyQt、PySide、wxWidget、gtk 未来のホープ flet GTKはメジャーVUP関連で多大な迷惑を世界中に(ryしたばかりだからな オマケ Webで作りたい ガワをpythonで作る Eel ガワをJavaScript Electron ガワをrust tauri fletってPysimpleguiで言うところのkeyって無いのかな? 俺が天塩にかけてpysimlpeguiで作った社内ツールが社内から全削除することになったわ 上司に相談しなければ良かった 社内ツールに GPLが障害となるケースってなんじゃい。 >>329 なんで?? E資格って簡単なんですか? 機械学習のスレだとITパスポートと同じぐらいって書かれてるんですが >>331 圧縮ファイルを解凍するのに遣ってたライブラリ引っかかったことならあった 公共交通機関関係の機器 でもfletだってライセンス変更する可能性もゼロじゃないよね やっぱtkinterか、ダサいけど GPLやLGPLは社内ツールだと使いにくいからねえ PySimpeGUIは独自ライセンスで先週にも更新されている 社内利用してる奴らはちゃんと読んどけよ 最初からMIT, BSD, Apacheしか許可されてない tkinterってテーマ自作できるからそれ使ってfletに似せてもいいよなー >>338 > GPLやLGPLは社内ツールだと使いにくいからねえ いやマジどういう場面で、GPLで社内ツールが使いにくいのよ?? >>340 社内ならコードを見せてもいいという感覚は理解できないな ただGPLの場合同じ組織内なら配布には該当しないから社内ユーザーにソースを見せる必要はないんだけどね 独自のパッチ当てることは普通にあるからな 特に社内でいろんな部署が使うと要求が強くなってきてコア部分に手を入れなきゃいけない場合が出てくる 最初は必要なくても数年使ってると必ずパッチを当てる日が来る その時はもう手遅れ とんでもないミスをしていたと気がつく だから俺はGPL系は仕事では使わない 社内利用の「公開」とは使う会社に対して公開すればいいってこと? 社内利用のアプリソースを全世界に公開するなんてしないよね ごめん、勘違い そもそもPySimpleGUIは個人利用以外有料化ってことか 俺も1アプリだけ使ってるところあったから修正する バイナリを配布した相手に対してソースも公開しないとならないってだけ 公開すりゃいいだけなのにな 公開を要求したら配布自体辞めちゃうフリーソフトとかある GPLを設計した段階では、みんなソース公開したらユートピアになるくね? と思ってたけど実際はディストピアだった >>349 > 社内利用の「公開」とは使う会社に対して公開すればいいってこと? ツールが会社資産なら当然でしょ。 公開範囲は社の規程する事で、開発者の専断できる事じゃない。 部外秘コードを社内部外者が GPLをたてに見せろと言ったところで、社内規程的に無理。 Qiitaとかで当たり前のように何の説明もなしにmac環境を前提とした記事を見るとイラッとする XCodeとか使わせてくるものじゃなければWSLや素ウブンツで代用できるっしょ macの人もmacじゃない環境で作られた記事を普通に参考にしとるよ >>353 そりゃ学生やフリーのうちはよくても 企業に属して色々縛られたら自分のコード公開するのは余計なリスク背負い込むだけだし 何の見返りも返さない連中にやってあげる義理はないだろ なんかMac使ってたら1段階上みたいなのをずっと言ってるヤツなんなんだろうな ThinkPadにLinuxインスコしてるやつが最強だと思うの macの世界にツールを自分で作って問題解決しようなんて文化は無いのに、 macでpythonやってる人は何作ってるんだろう ハードでmac使ってるだけで中身はlinuxだったりwindowsだったりしたな パーティション切ってマルチブートさせて使うのが一般的だったが昨今はまぁ…秘密だわな スタバでマック開いてる奴いたけどプログラミングじゃ無かったな 俺が見たのは某スポーツの試合を分析してる人だった 試合の動画を所々をコマ送りにして何か書き込んでる感じだった プログラマーやデザイナーや仕事や学業で必要なわけじゃないのにMac使う人ってお金を無駄にしてる気がする >>365 この言葉だけで無能って分かる コード書くのに手首の位置にあるパッドって邪魔じゃん 家とかオフィスならマウスとか繋いで本体パッド無効にする だけど本当に出先でラップトップ1台でコード書くならThinkPadみたいなキーボード中央のポインタ有る機種以外選択肢無いよね >>367 今時ほとんどのノートはタッチパッドあるだろw いつまであんな赤ポチ信仰してんだよw あそこは手のひらを乗せる場所だからなあ どうやっても勝手にマウスが動く 指でないと動かないみたいにいつか進化するだろうと思うけどまだできない タッチパッドがダメな理由が全く理解できん それにコード書いてる時はポチなんて触らんだろう どういう状態なんだ? ThinkPadって今中華PCでしょ? 客先に中華PCで出入りするの? トラックポインタ慣れたらタッチパッドなんてクソすぎて使いたくないだろ ThinkPadは支那に売られてから買わなくなったわ >>370 コード書く時にポチを使うんじゃ無くてトラックを無効にしたい 今時のまともなノートPCならパームリジェクション効くから指以外でカーソル動かん そもそもマウス使える状況なら手首は浮いてるけど べったり触れてれば検知は簡単だろうけど、 手のひらの一部と指を区別するのはなかなか大変 志那は差別用語です ネット右翼ばっかり さぶれインパクトのように艦これ好きそう シナが差別用語なのは戦時中日本が差別や侮蔑の意味を込めて使っていたからです 膺懲支那、戦時中の日本のスローガンですね あとシナは国名じゃありません >>370 > タッチパッドがダメな理由が全く理解できん スペースバーの手前にタッチパッドがあると、親指の付け根、手相で言うところの金星丘がパッドに触れる場合がある。マウスポインタが移動して、大変邪魔だ。 > それにコード書いてる時はポチなんて触らんだろう viエディタならそうだね。ただ、マウス必須のエディタも多いから、そんなのでコーディングしている場合、人差指が届くトラックポイントは便利だよ。 >>384 だから今時そんなクソ性能のトラックパッドないってw どんなマシンを使ってるの? どんなエディタでも基本的にマウスなんか使わないぞ どのエディタ使ってるの? 教えてくれ まさかカーソル移動にマウス使ってるの? 俺からアドバイスするとまずそれをやめた方が良い エンジニアの会社なのにマウスでカーソル移動多様してるのみると めっちゃ気になるしわかる 得てして最適化に無頓着だったりする そこまで気にするならそもそもWindows使うのが無駄やし windowsとか関係ないよ むしろwindowsはやりやすい部類 Macはキーバインドがシステムのものと被りまくるからデフォルトでは訳わからないキーバインドになってる まずそれを一斉に変更するところからはじめる やってられんぞ 昔は1日に数回しかマウスポインタ動かさない人とか結構いたよなあ コーディングのみ=CLIで完結(キーボード配列の方が重要でGUI操作は何でもいい) 資料作りやデザイン=マウス(マウスぐりぐり操作多用) マウス持ち歩きたくない=トラックパッド、赤ポチ等(非製造者、営業向け) マウス、トラックパッドと赤ポチを天秤に掛けてるのは 単に赤ポチに最適化されてる人がいるんだなってだけの話しでしかないように思う webブラウザがどう考えてもマウス使った方が効率いいので、 マウス使うことに特に抵抗は無いな 逆にブラウザ以外では殆どマウス使わないけど VSCodeがマウスを完全排除したデザインになってるからな もうvimとかemacsとか関係なくマウス使う人は無能扱いで良いと思う レビューとかする時はマウスのみでやった方がいいんだよな 多少はマウスも知っておかないと、どこにメニューがあるか判らんになる とりあえずカーソル移動、ファイル移動にマウス使ってるやつは直した方が良いぞ 範囲選択して切り取って別の場所に貼り付けとか全部マウスだけでできる VSCodeのVim拡張で編集モード中に日本語入力した後エスケープで抜けた時に日本語入力から抜けるってどうしたらいいの >>398 IMEの設定 Google日本語入力の場合 キャンセル後IMEを無効化する さらにMacだとキーボード設定の「書類ごとに入力ソースを切り替える」にしてIMEのモードをアプリごとに固定する こうすることで切り替えごとにモードがコロコロ変わるのを防ぐ このように徹底的に効率にこだわる それこそ常人からしたら理解不能なレベルのね >>398 設定にあるIMCmdでim-selectコマンドを指定してあげる NTTドコモ、Python GUIライブラリ「Streamlit」でデータ可視化アプリを内製開発 https://it.impress.co.jp/articles/-/25986 ついに天下のドコモがstreamlit使うんだって お前ら今すぐ勉強しろ 開発元のsnowflakeって日本に進出してるんだな ドコモとコネを作るってどうなってんだ Snowflake、NTTドコモが全社規模のデータ活用の取り組みに「Snowflake Streamlit」を採用 https://www.nikkei.com/article/DGXZRSP668681_S4A220C2000000/ >>403 これって事務職に給料上げないまま開発もどきをさせるって理解で合ってる? 事務というか営業とかマネージャーでしょ こういうデータやグラフ欲しいとかいって開発に丸投げしてたものが 直接自分たちでできるようにするってことかと 良いことだと思う C++の後継目指すプログラミング言語「Carbon Language」、Googleの技術者が実験的公開。C++は技術的負債で改良が困難と https://www.publickey1.jp/blog/22/ccarbon_languagegooglec.html いちいち新言語にしないで、基本はpythonのままで、 書き方に制約を入れて高速実行可能にするとかのアプローチがいい 例えば型が決まってないことがかなり足枷になりそうだけど、 実際のpythonのコードは同じ変数をいろんな型に使わないケースが殆どなので、 それをルール化してしまえばいい >>410 でも、 いまだにC++が圧倒的に使われてるのがすごいな ゲームとかAIとか 組み込みなんかCだけどな 安全に使う為のチェッカーが物凄いことになってる うちの周りは組込みでもみんなC++だけど、いまどき純粋なCで頑張ってるところってどのくらいあるんだろう Cの方が多数派な感じだけど CもC++も中身は同じだけど、C++の方がバイナリが大きくなって速度が落ちる 低級な言語で苦労して書いてるのは少しでも小さいメモリと安いプロセッサで動かす為なんだから、 C++に甘えていては本末転倒 >C++に甘えていては本末転倒 そういう精神論的なやり方してるところってまだ多いのかな。組み込みの世界は。 footprintが必要なサイズに収まりゃいいだけなのにな。 RAMもフラッシュもサイズのバリエーションがいろいろ用意されてるから、 小さければ小さいほどいい 必要な要件を超えた最適化ってのもオーバーエンジニアリングだよな。 C++で使える便利なあれこれを使ってる余裕なんか無い 数千とかある変数は全てグローバル変数 言語仕様にスコープして貰うのではなく、干渉は人力で避ける 競合相手も同じことしてるんだから、その方法を続けるしかない >>417 ファームウェアなどはその上で動くアプリのほうが偉くてそちらにリソースを渡せるほど良いので固定の必要なサイズなんて無い 風景画ではAIと人間のどちらが描いたかを見抜けないことが明らかに >>これらの生成AIは、事前に与えられたトレーニングデータを学習した情報やパターンを基に、画像や文章、動画などの新たなコンテンツを作り出すよう設計されています。 >>それゆえ生成AIが生み出す作品は高品質で、人間の作品と見分けがつかないものも存在します。 >>ロンドン大学のウルリッヒ・カーク氏(Ulrich Kirk)らの研究では、AI生成と人間が描いたアートに対する美的な評価を実際に比較しています。 >>実験では、fMRIに入った状態で参加者に、AIによって生成されたというラベルが貼られた絵と人間が描いたというラベルが貼られた絵を見て、美しさを評価してもらいました。 >>実験の結果、人間が描いたというラベルが貼られた絵は、AI生成されたというラベルが貼られた絵よりも美しいと評価されました。 >>新たに慶應義塾大学の周儀珍氏(Yizhen Zhou)らの研究チームは、AI生成のアートに対するネガティブなバイアスに関するより詳細な検討を行いました。 >>実験の手続き。参加者は20秒間自由に画像を観察することができた。 / Credit: Zhou et al., (2023). >>実験者は、Vienna Art Picture System(VAPS)のデータセットから風景画20点と、Disco Diffusionにその風景画の名前と作成者の名前をプロンプトに入れ、生成された風景画20点を用いました。 >>また評価時には参加者の眼球運動を測定しており、注意が向いた場所や観察時間に違いがあるのかを比較しています。 >>またAIと人間のどちらが描いた絵なのかの判断においては、人間が描いた絵は約68%が正確に分類できたのに対し、AIが描いた絵を正確に分類できた確率は約43%に低下しました。 >>つまり、私たちは人間が描いたのか、AIが生成したのかを正確に判断することはできず、具体性や美しさなどの美的観点では同等の評価を下しましたが、人間が描いた 背景画像を先に描いてから人物を描けば正常な映像が描けるともとれる 便利なテクニックは習えても 不要な複雑性を導入しないってのはなかなか習えないからな >>421 ふつう、ファームウェアはそのソフト自身が見積もるもんだと思うが、 その上で動くアプリって何だ?なんかあまり一般的じゃない例に聞こえるが。 まあなにか別のソフトを動かすためにメモリを空けておかないとならないんだとしても どれだけ空けておくかは決めながら進めることになるだろうがな。 >ふつう、ファームウェアはそのソフト自身がどれだけメモリを使うかを見積もるもんだと思うが、 ファームウェアとミドルウェアを混同しているのかも知れんね ここpythonスレだぞ 関係ない書き込みはするな 【AI】Stable Diffusion 3発表、Soraで話題の拡散トランスフォーマーを採用 [すらいむ★] http://egg.5ch.net/test/read.cgi/scienceplus/1708865670/l50 ボイス・トォ・スカるしている者も攻撃を受けるようになりました Pythonが何言語でコンパイルされているか知ってる emoji.emojize()すると、ある程度はちゃんと変換してくれるけど、 :hand-pink-waving: :face-pink-drinking-tea: :yougotthis: みたいなのが結構残る バージョン上げても全く変わらなかった もっと完璧版は無いのかな 特定できてるならissuesで報告して 対応するまでパッチ当てとけばいいんでは? >>417 組み込みでC++があまり使われないのは精神論じゃなくて、処理系が中途半端な実装であることも多くて処理系の癖をよく調べないとトラブルの元になるからだと思う。 Cに比べてC++は機能がリッチだからその分だけ調査対象が増える。特定の処理系しか使わないならその処理系とじっくり付き合っていけばいいけど、 組み込みの人っておそらく色々な処理系を相手にしているし、 ハード固有の事情も調べないといけないから処理系のことばかりに時間を割けないのだと思う。 組み込み屋さんと一緒に働いて感じた印象だけども。 組み込みってどこからどこまでが組み込みなんやろな? バイナリエディタ使ってないならもうそれは組み込みではなくてソフトウェアの領域な気もするし 制御は、また組み込みともちがうくね? デバイスドライバー限定で組み込み? それも違う気がするんだよなぁ。 エンベデッドって一体どこまでがエンベデッドって感じ マイナーなマイコンで炊飯器の制御するとかからARMでLinux動かすとかまで、 一口に組み込みといっても幅が広いからね。 罰ゲームみたいな環境での開発を強いられている人はご愁傷様。 家電のUIとか、特にAndroidTVのホームアプリあたりも組み込みソフトウェアって言ってるのかな スレ的に全く関係ないけど 個人的にはデータシートじゃなくてAPIだけ読めばいいのは組み込みじゃない感じがするな。 つまり、少なくともハードウェアに直接アクセスするメモリマップドI/Oを自分で叩く、またはかなり薄いミドルウェア経由で叩くのが組み込みって感じ。 HALで抽象化されてるのはもうソフト屋な感じがする。 新規開発だったらどうしてもそうなるけど、 変更するだけならハードは何も触らない 世の中の開発の大半は変更なので、 組み込みといいつつハード知らなくてもどうにかなる そんな範囲の開発だと品質の点からも 毎回ドラスティックに変更してるわけないしコピペだろうよ 気苦労は外部デバイスへの愚痴くらい C→Pythonは意味がないし 仮想CPU上で実行とかでないと無理 日経ソフトウェアの2024年3月号を図書館から借りてきました。 佐賀大学の上田俊さんのNetworkxを使ったグラフ理論の連載がありませんでした。 前号、前前号には連載がありました。 なぜですか? >>446 他の連載も毎回掲載される訳じゃないから今回はなし pybind11だっけ?PythonからCってのはある >>448 そうなんですか。ありがとうございました。 fastapiなりのマイプロジェクトで自作モジュールをインポートしたければプロジェクトルートの親フォルダーまでのパスをmain.pyみたいな起点モジュールでsys.pathに読み込めばいいの? >>453 pipでインストールできるようにパッケージ化する >>455 その発想はなかったわ いいね >>454 それもいいね でもvenvでやるのめんどくさそうだったから避けてた 社内でpipリポジトリ作ってそこで管理してるね 公開するような質のものではないしw pipでインストールできるようにするのとpypiで公開するのは別の話ぞ デプロイの手段として、 開発環境でビルドして作ったwhlファイルをデプロイ先にもっていってpip install whlファイル とか gitリポジトリからcloneしてきて、pip install -e . みたいなやり方もある どうもそのやり方にピンとこないのだけど whlは枯れたやり方だよね? ならgit cloneしてmakeでビルドしてもらって ローカルでpython setupでインストールしてもらったほうが…安全なのでは とりあえず>>460 が枯れたの意味を誤解していることはわかった いや枯れてるとかではなくただ古いから非推奨 setup.pyがいけてないからより進化したpipや現在の仮想環境構築系のツールが生まれた そったを使おう Flaskのチュートリアル https://packaging.python.org/ja/latest/tutorials/packaging-projects/ パスをどうこうとかするよりも、pip installできるようにしたほうがいいよっていうだけ 方法は好きなの選べよ pyinstallerでexe化するのにexeのファイルサイズが出来るだけ小さくしたいから、venvで新しいシンプル環境作ってプログラムが最小限に動くライブラリをpip installしてexe化したら ごちゃごちゃしてる環境のexeよりファイルサイズがでかくなったんだけど、そんなことある? pyinstallerに渡す引数は全く同じ ライブラリ「これもいいなぁ、あっこれも。全部インポートしちゃお」 >>468 「容量が増えた? なぜ??」 まずは中身を比較してサイズが増えてる原因を正確に特定する 妥当かどうかを確認するのはそれから おそらくpyinstaller が何やってるか中身見たこと無いんじゃなかろうか。俺も見たこと無いけども。 onefile指定せずにつくって中みてみたらいいんじゃね アンチウィルス反応するからexe化なんてしないしな みなさんありがとう。 onefile指定せずに見てみます! うーんfletのバグなのかな? pyinstallerでやるとファイルサイズがシンプル環境<開発環境になるんだけど flet packでやると逆になるんだよね。 よーわからんけど、exeにするなら別にpack使わなくてもいいか。 pythonめちゃ面白いな ChatGPT使いながらだけど色んなの自動化したよ 宿題スレが機能してないっぽいけどここで質問しても良い? 難易度多分高くて普通の人には無理だと思うけど… 一応はスレ違い?だしレベル高い人居るのかな?って事で聞いてみた もしスレ違いでも誘導されるか無視されるか罵倒されるだけなんだから、気にせずさっさと本来の質問をしろってことだよ 答えられる人が居るかどうかなんて分かる訳が無い ちなみに俺は答えられない >>480 もちろん良くないです。 宿題なら宿題スレへどうぞ。 VSCodeで右上の三角ボタン押すと開いてるPythonファイル実行できるけど、カレントディレクトリがルートディレクトリになっちゃう。 カレントディレクトリをファイルのある場所にしたいからとりあえずはCodeRunner入れてCTRL+ALT+Nで実行して settings.jsonに "python": "cd $dir && python -u $fileName" 追加すればできるけど、三角ボタン押してこの挙動にする方法ある? VSCode の拡張機能・Code Runner は、 右クリックメニューから、選択したコード、またはファイル全体を実行する この設定をチェックしておく Code-runner: File Directory As Cwd Whether to use the directory of the file to be executed as the working directory. そうすると実行時にcd で、そのファイルがある場所へ、 current working directory(cwd) を移動してから、 例えばRuby なら、ruby "絶対パス/ファイル名.rb" 又は、ruby "絶対パス/tempCodeRunnerFile.rb" で、そのファイルを実行する tempCodeRunnerFile.rb は、Rubyのコード片をコピーした、一時的なファイル 設定項目、executorMap には、多くの言語の実行コマンドが書いてある。 "code-runner.executorMap": { "javascript": "node", "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", "python": "python -u", "ruby": "ruby", VSCodeでnbimporter使ったコードのデバッグしたいんだけど、どうすればいいですか? なんか文句言われます flet 0.21から非推奨になったのあったりして書き換えないといけないよぉ def func(number = 1) に型ヒントつけると、 def func(number = 1: int) でなく、 def func(number: int = 1) なのが不条理に感じられ腹立つ。 なんでやねん。__str__ は str とちゃうんか。 $ python3.9 x.py Traceback (most recent call last): File "/home/u-suke/x.py", line 8, in <module> '区切'.join(l) TypeError: sequence item 0: expected str instance, type found $ cat -n x.py 1 #!/usr/bin/python3 2 3 class C: 4 def __str__(self): 5 return 'いろは' 6 7 l = [C, C, C] 8 '区切'.join(l) >>494 もとい。 インスタンス化しても、変わらんな。 $ python3.9 x.py Traceback (most recent call last): File "/home/u-suke/x.py", line 8, in <module> '区切'.join(l) TypeError: sequence item 0: expected str instance, C found $ cat -n x.py 1 #!/usr/bin/python3 2 3 class C: 4 def __str__(self): 5 return 'いろは' 6 7 l = [C(), C(), C()] 8 '区切'.join(l) __str__はなんか使ってくれないことがあるから、全部__repr__にしてる >>496 ありがとう。でも変わらん感じ。 $ python3.9 x.py Traceback (most recent call last): File "/home/u-suke/x.py", line 8, in <module> j = '区切'.join(l) TypeError: sequence item 0: expected str instance, C found $ cat -n x.py 1 #!/usr/bin/python3 2 3 class C: 4 def __repr__(self): 5 return 'いろは' 6 7 l = [C(), C(), C()] 8 j = '区切'.join(l) 9 print(j) str()してやらんといかんのかねえ... 7 l = [str(C()), str(C()), str(C())] # あ、ユーザ名書いてもた。 それは当たり前 l = [str(x) for x in [C(), C(), C()]] l = [C(), C(), C()] print(l) みたいにprintに渡すと、printがstrを自動的にやってくれる で、__str__だとそれすら意図通りにならない withの中でループして その中で関数にsession渡すと閉じられるとかいう謎仕様気づかなかくて 1週間かかったわクソ 初心者だけどflaskでポートフォリオいっぱい作ったら就職できますよね? 基本覚えてこのスレでtkinterとかarcadeとかpyxelとかfletとか触ってきて あんまりしっくりこなくて こんなの覚えても仕事ないよなあって思って flask学び始めて、なんかこれ使いこなせたら強そうって思ってるところ flaskだけで仕事できますか? >>502 無理 まずc10K対応がされてないflaskでシステム作る事は殆ど無い あっても極小規模システムというかツールなので単価は安い 何の仕事をしたいのか? pythonを使うならデータサイエンスとか統計やってAI関係をやるしか報酬の良い仕事は無い Web系がやりたいならNextjsやらJavaやらC#をやるのが仕事も多いし報酬も高い >>502 > flask しっくりくるってより単に他より簡単だったってだけなんでないの? どれも使った事ないから知らんけど。 とっかかりとしては良いんだろうけど、 簡単だから良いとか思っているようでは仕事にはならんと思うわ。 >>502 flaskだけでは無理とは言わないが難しいかもしれないね。 プロジェクト毎に違うと思われるので、無駄にならないように基本型を学ぶ必要はある。 てゆーか、アーキテクチャに慣れたら他全部同じように使用されるので フレームワークに依存しないよう別のフレームワークやツール使っても同じこと出来るようにしておくと生存確率もあがるし、選ばれやすくなる。 3人も詳しくて厳しいレス、本当に感謝です flaskだけでは厳しいですか・・・ 初心者はFlaskを選ぼうって聞いたんだけど、Django以外選択肢はないってことです? Webアプリだとそれ以外ないですよね Flaskだけって聞いたのは、モジュール毎に作法が違うから なんか広く浅く手を広げても全然スキルアップしてる気がしなくて・・・ Webアプリって作ったことなかったけど、flaskは テンプレートとかがあって、無駄を極限に削ぎ落として 無理やり汎用性をもたせようとする感じがなんか気持ちいいって感じです Pythonが好きってわけでもないですが、 pycharmが好きで一生pycharm触っていたいなって感じです でもWeb系は他の言語になるんですね ブラウザでどこからでもアクセスできるものを作りたいって思ってますが 高卒なんで、AIとかできる気がしないから、Webアプリしかないですよね こういうスレで就職できますか? はどういうところを目指してるんだろう、システム開発専門のとこならPythonだけで済むわけないし、詳細設計書をもらって組むだけなら昔からのIT土方だし。設計できなければ将来はない。一般企業の情シス目指すならB2B(実際の会社はこれがほとんど)だとまずは会社の業務を知るところから始まる。ホームページはとりあえずあるけど、で放ったらかしは多い。 うーむ謎だ。 pythonだけで済むわけないのは同意だが 他のその分で単価上がってなければできる必要はない ボランティアではないし、安く使おうとするところに居てはいけない 全言語中、Python だけが供給過多。 プログラマーはいらない Pythonで欲しい人材は理系の大学院数学科か、 AWS 機械学習資格を持っている香具師 だから文系は、Ruby on Rails がチート職業と言われるわけ。 筑波大学も、Railsチュートリアルを使っている。 少し古いRails 5 なら、Railsチュートリアルのサイトで無料で読める 言語でも、Rubyは、Go/Rust/Elixir の3大言語を超えた! Stack Overflow 米国年収。2022 -> 2023 Ruby : 9.3 -> 9.9 万ドル Pythonなど多くの言語 : 6.5〜7 -> 7.3〜7.8 PHP : 5 -> 5.9 もし、ウェブ系でPythonを選ぶと、 なぜ、Railsを選ばなかったのかと聞かれて窮するw KENTA や、Rails専門学校のRunteq の動画でも見れば? 勤怠管理、社内チャットツール、顧客管理、商品管理 こういうの買ってる会社にいてて 自分で作れたら買う必要内容なあってのと 教育関係にいるから、成績推移管理、内申点管理、進路希望管理 こういうのを一つにまとめて個人面談に使えるようなあってイメージ 以上のもの作るのにもPythonは向かないって思われます? プログラマーってこういう仕事してるんだというイメージです 高校情報IがPythonかJavaScriptなんで 他の言語の選択しないし、一度Pythonを使うと 波括弧やセミコロンが鬱陶しくて他言語使おうと思わない Pythonでやりたいってなるのは自然なことだと思ってました >>511 まずその馬鹿な頭から作り直す必要があるぞ EXCELでもpython使えるようになったしまずはEXCELを使いこなせるようになることだな webアプリならフレームワークはflaskなり好きなの使えばいいけど、html, css, javascriptは必須やん あとdbも 教育関係って言っても高卒の校長教頭の事務ITサポートだから 学力の低さと日本語能力は簡便してください html、css、javascriptは習いましたが 学校出てからは全然書いてません Webアプリケーション作るのにPythonが最適解で無いのだけは伝わりました もうちょっと調べます >>517 いや学校の教師だけが使う程度ならpythonで十分 問題は買った方が安いのを自分で作ればと勘違いしてる点 不具合対応や追加機能 インフラ整備 教職員への操作説明 そもそもの開発作業 どう考えても買った方が安いです 職場で使うことをターゲットにするなら買ってる部分以外にした方がいいと思うけど まだ何にも作ってないなら、とりあえず買ってるものでも何でも動くもの作ってみたらいいんじゃね ただ、確実に予算はつかないから職場で勝手につくるのと、職場から勝手に個人情報に限らずデータを持ち出すのはやめとけよ 仮に有用なものができたとしても事故か何かで突然作者が維持できなくなった時のことを考慮できるかというのが内製の一番の課題では? その場合に予算つけて外に投げたとして業務を知らない赤の他人が処理を追える程度のコメントやドキュメントを維持することができるのかどうかとか まあ高校の情報処理でプログラミングしか勉強してないから運用とか保守とか事業継続とかそういう視点が分からんのだろうね だから自分で作れたら買う必要が無いって変な思考になってる 売ってるなら買えばいい 売ってないような細かい便利ツールが作れると仕事や趣味に役立つ どうやっても本業にはならない >成績推移管理、内申点管理、進路希望管理 この辺なら個人レベルで済むからpythonでstreamlit辺りでツールとして作るのは有り 俺だったらプログラミングの部活を作るかな 部活としてプログラミングを教え更に作品として学校関係のシステムを徐々に構築していく 代々の部員が機能追加しつつ修正しつつ作り直ししつつと受け継がれていく 全部Excelでいいだろ。 進路希望管理とか、紙で提出された内容を入力するだけじゃないの? >>523 お前も似たりよったりのレベルじゃねーかwww そもそも事務ITサポートサービスを提供してる会社の人間に部活作れるわけないじゃん 学校教育で教えるならJavaかc++だろう Pythonはかゆいところがありすぎて結果的に自作ライブラリになってしまう。 サードパーティライブラリでできない事がまだまだ多いのでもっと楽させてくれ。 >>526 何言ってんだお前? 高校の教科書見た事ないのか? >>527 見たことあるがそれがどうかしたか? itssレベル1の内容程度のことばかりなので javaもしくはc++やってほしいなって話なんだが >>529 ありえない やってもC言語 何故が分からないなら無能 明治時代の数学の教科書とか見ると、今と内容は同じ ひらがながカタカナになってるだけ 学問ってのはそういうもんだ 普遍的な知識でないといけない このスレってPython以外の話になるとスレが伸びるよね(´・ω・`) 結局Cになってしまうのか、でポインターってなんですかあ?から始まるのよな。 NiftyのCのフォーラムで同じ事が繰り返し聞かれるけど根気よく答えましょう、とか主が言ってたな。皆頑張れよ!ああジジイだよ。 >>532 基地外がよってくるからな 一切構わず無視してNG推奨 Numpy と PyTorch では多言語の追従を許さないじゃん >>511 >勤怠管理、社内チャットツール、顧客管理、商品管理 Excel/VBA かRuby on Rails で、データベースもいるのか? >成績推移管理、内申点管理、進路希望管理 統計・図なら、VBAかPython。 Rubyでも、HTML, CSS, JavaScript(JS)で図も描ける そりゃ、高校ではPythonかJSになる。 でも職場では、VBA それ以上のデータベースを使ったシステムなら、Rails。 AI・機械学習なら、Python 3大プログラマー投稿サイト、Qiita, Zenn, Note はRails製。 他にも、Shopify, Airbnb, Cookpad, Github, Gitlab, Hulu なども そこらのお手軽環境でLispやSmalltalk並の生産性誇るのはRailsくらいだけど 品質や保守性かんがえると自社サービスでギーク抱えてないと無謀 掌田津耶乃のFlask の本を見たけど、Ruby のSinatra に相当するもの。 Rails ほど大規模ではない感じ Bootstrap, Vue.js, データベースなども使う {{ 式・文 | フィルター }} みたいに書くのは、Shopify のRuby製のLiquid に似た文法 まあでも、Python でウェブ系をやる意味はない。 KENTA も初心者のキャリアパスは、Rails → Go のみと言ってるし PythonでWeb系やれないやつがそう言ってるだけで実際は案件で一番多いのはPythonやからな 他にはPHPくらいじゃね? >>543 無い無い まず求人サイト見てご覧よ 言語で言うならPythonの求人はJavaの4分の1程度 その上でPythonの仕事内容の多くはデータサイエンスやAI PHPは言うように以外と求人はある でも多くのWeb案件はNextJSやJava C# 都内のpythonは多いが 田舎はjavaphpperlrubyばっか Indeed Next.js 4696 Vue.js 17271 Laravel 12150 Python 8637 Flask 1191 Django 4221 Rails 10694 Ruby 15154 React 24415 C# 45325 Php 60515 Java 85065 Javascript 85087 TypeScript 20636 Pythonは求人少ないんですね >>545 田舎の方がモダンな言語の人気が高いということか。不思議だな。 Runteq の菊本だったか忘れたけど、誰かが言ってたかも知れないけど、 最近、Wantedly の求人の質が下がってきて、 Ruby on Rails は、Geekly へ行ってるとか 他には、Green とかはどうなの? >>510 にも書いたけど、 PHP はKENTA がオワコン認定した。 サーバーの8割がPHPだけど、要するにWordPress 専門言語だろ。 AWS Lambda にも、デフォルト言語として採用されていない 米国年収でも、Dart と並び断トツに低い。 情報学部に行っていない高卒言語 Ruby : 9.9 万ドル Pythonなど多くの言語 : 7.3〜7.8 PHP : 5.9 必死にRubyを宣伝する馬鹿 Rubyこそオワコンなのに >>526 pythonってライブラリが充実してるって言われてるけど Javaのほうが充実してるの? 分野と数でいうならそう 業務系はとりあえずJavaっていう時代が長かったし 何か言語を選択しなければ、という発想が間違い 適したものや使えと言われたものを使えばいいだけ この言語をやるとこの言語ができなくなる、みたいな制約は一切ない 最初の段階でデータ構造とアルゴリズムを分離して考える癖さえ付いてれば LispだのPrologだのHaskelだの(Visualでない)Basicだのならともかく 普通の手続き型なりオブジェクト指向なりの言語、どれ使ったって書けるよ それよりフレームワークなりライブラリの揃い方のほうがよっぽど重要 機能追加したろ、げGoで書いてある、で調べて書き直して よし動いたGo完全に理解した でレパートリーが増えていく >>557 書けるのと使いこなせるの間には大きな壁がある 大抵の「なんでこんなコードなんだ?」ってのはお前のいう書ける程度の奴の戦犯 ファイルから読み込んで改行を外してリストにする lines = f.read().splitlines() これと、リストに改行を付けてファイルに書き込む f.write('\n'.join(lines)) は逆の処理ではない 最後の行だけ改行が消えるから joinの代わりに内包表記使うのも、最後に追加で改行書くのも、なんかスマートじゃない 改行が付いてたらそのままで無かったら改行を付ける、 みたいなインテリジェントwritelinesがあればいいのに そもそもリストに入ってるものをセパレータも何もなしに結合するという破壊的な処理が 必要になる局面なんか無い writelines(list) は write(''.join(list)) のシンタックスシュガーみたいなもんだよな むしろ誤解を招くので、 writelineswithoutanyseparators() みたいに名前にすべき 対になるのはreadlinesだし 不可逆になるsplitlines使うのが悪い >>565 メモリの使い方ば少し違う でかいファイルの場合は多少気ににする必要がある Pythonのread/readlines/write/writelinesは 改行を追加したり削除したりできないので使いにくいのは確か こことか見ればみんな不満に思ってるのがわかる ttps://stackoverflow.com/questions/13730107/ >>565 > writelineswithoutanyseparators 読みにくいわー。日常的に、 def supercalifragilisticexpialidocious(): とか書いてるの? 要は、リストがあってそれをファイルに保存したりファイルから取り出したりしたい csvやjsonやpickleのtxt版 もう少し処理が込み入ってればライブラリ化するんだけど、 1行で書けるからそんな気にもならない >>568 それは一語だからそうとしか書けないでしょ >>560 最終行の改行を気にするなら、splitlines()を使うこと自体がおかしくね? >>> '1\n2\n3'.splitlines() ['1', '2', '3'] >>> '1\n2\n3\n'.splitlines() ['1', '2', '3'] splitlines()はまさにそういうものを対象にした関数 splitといいつつ、末尾にnullができればそれは無視する writelinesもどう見ても行は書いてなくて、行を結合したものを書いてる このへんの関数名と処理内容の不整合が一番の問題 想定と違えば作ればいいだけだけど、欲しいものが既にあるように見える >>> "1\n2\n\n\n".splitlines() ['1', '2', '', ''] >>> "1\n2\n\n\n".splitlines(keepends=True) ['1\n', '2\n', '\n', '\n'] >>572 >'1\n2\n3' バイナリじゃなくテキスト処理の対象なら こういうのは改行コード入りの正しい形式に統一するほうが一般的には望ましいので split/join使っても1つ足しとけば多くの場合は問題ない 末尾の改行コード入りで行単位のテキスト処理をするよりかは楽になることが多い Ruby でも、join の最後には改行はない。 print の後ろにも改行はないが、 puts の後ろには改行はある p [ 1, 2 ].join("\n") print [ 1, 2 ].join("\n") puts [ 1, 2 ].join("\n") puts "end" 出力 "1\n2" 1 21 2 end >>576 splitlines() は split() と挙動が違うのに split を名乗るなやゴラーと、>>560 氏は言ったのでないの。どう処理するかでなく。 逐次処理してて、見つけたらその都度printする それを改行せずにコンマで区切りたいので、 print(f'{item}, ', end='') みたいにすると、 1, 2, 3, みたいに最後に余計なコンマが付く それが見苦しいので、一旦リストに入れておいてjoinすることはある 最後の余計なセパレータはNGなのか C言語の文末の;はセパレータだと思えば余計だけど、無い方が不自然 付けたらエラーになるpascalの方がどうかしてる リストやらの定義で複数行に分けて書く時に最後の行にも余計なコンマをわざと付けることで、 エディタで編集が容易になる という状況を見ると、セパレータの追加処理は最後にも付ける方が自然な気がする 自然とか、一般的とか、多くの場合とか そんな曖昧な話じゃないでしょ csv.writerか似たようなをwriterを書けば幸せになるかもね s1 = 'a\nb\nc\n' print(s1.splitlines()) print(s1.split('\n')) ['a', 'b', 'c'] ['a', 'b', 'c', ''] この挙動の違いをどうしたものかと >>583 splitlinesは改行コードまでを一塊として処理する \nだけに限らない splitは指定したキーワードで分割する >>583 その2つは用途が異なるからそれぞれ別の関数が用意されてるわけで挙動が違って当然 何を問題視してるのかわからない >>584 splitもセパレータを指定しなければ\nに限らず空白文字(whitespace character)なら分割される (それと連続した空白文字はまとめられるので空文字は含まれなくなる) 文脈からわかるけど空文字ってどこ界隈で使われてんだろう pycharm使ってるんだが、 Windowsをクリーンインスコしたあとpycharmをインストールすると、 pythonの実行環境を再設定するのが面倒。 環境ってプロジェクトのフォルダー配下にあるはずなんだが、 その環境をpycharmが認識してくれない。 # 他人様の blogを勝手に拝借して恐縮だが、 /usr/lib64/python311.zip とは何ぞ? なんで sys.pathに zipが存在するのだろ。 https://www.tomoyan.net/python/pip# パッケージのインストールパスを調べる > $ python -m site > > sys.path = [ > '/home/tomoyan', > '/usr/lib64/python311.zip', リヌクスならメモリ上に読み込む時にlzhに変換してから名前空間にロードするので 3.11はOS標準のpythonじゃないからzipにしてるんじゃないかな PEP 273 – Import Modules from Zip Archives https://peps.python.org/pep-0273/ 展開したディレクトリがあるのと同じ感覚で読み込めるらしい c#とかやってるけど結局人工知能に興味が沸いてpythonに戻ってしまう 就職出来ればc#でもjavaでも何でもいいんだけど この時代人工知能以外のIT技術って何を習熟していけばいいの? もうjavaとかc#で文法以上の何をすればいいか分からん 興味あるならpythonでとことんAIやったらいい 他人のgithub落としてサンプル動かす程度は誰でもできるから勘違いすんなよ >>595 いうて発展的にやることって大規模なデータ訓練とかでしょう? それか卒論レベルの論文書けるくらいの研究を試してみるってこと? >>594 人工知能に訊いてみりゃいいじゃん。人はなぜ生き、如何に死ぬべきでしょうと。 >>596 どう応用するかはお前の能力次第 好きにやれよ >>598 そうだな ただ成果はネットに公開しないほうがいいよね ライセンス等に問題なければしょぼくても堂々と公開した方がいい デメリットはない、就職時にもプラス評価 そもそも公開しても誰にも注目されないのが普通 >>601 お前もパクるんだろ? 気にすんな 実害被ってから考えたらいい まずパクられるレベルになるのが難しい 平凡なアイデアでは間違いなく先人がいる 適材適所で言語変えてた、言語自体の研究してたくらいじゃないと 言語習得なんて就職時の評価にならん どんな判断の上どんな応用してきたのかが知りたい部分 >>594 のような有能な人は燃え尽きるタイプかなって思うので、常に謙虚でいられるように学ぶ姿勢を持つと良い。 一生学ばなればならないことを忘れてはならない。 AIが代わりに組んでくれる時代がすぐそこまで来てるからな そのうち手で組むのは趣味だけになるよ プログラムを作るプログラムを作るとシンギュラリティ来るぞ >>605 有能じゃない kerasとかtensorflowのバージョン上がって 2,3年前に書かれたコード拾ってもどう修正したらいいかもわからん 仮想環境で前バージョン入れてみるってことかな 流石に新しいコード書くのはスキル的に無理だし 大丈夫、始める前からパクられることを心配してるタイプの人間はすぐやめるから パクられるようなもん作れたなら大したもん 誇っていい >>594 言語仕様なんて勉強するものじゃないだろ 使いながら調べるだけ 本質はデータ構造とアルゴリズムだよ >>613 使いながら?ライブラリと勘違いしてない? あとから新発見があった場合にリファクタしに戻るんだろうか 言語仕様はひと通りみて作法がみえないと使いたくないな >>614 どう適用して応用するかって一生つきまとう 道具の使い方じゃなくてそういう話 >>615 今はChatGPTあるからそんなこと勉強してるより書いた方が良いぞ ChatGPTは古い書き方を出すことはまずない たしかにたまにバグ入れてくるから鵜呑みはできないけど 書き方に関してはそうだね 次の機会に初手ChatGPTで試してみるか 文法や作法を初めから完璧に仕上げるのは無理なので書ける範囲でどんどん書いたほうがいい >>615 仕事じゃなければ、後からリファクタリングでいいんだよ。存在しない美しいコードより存在するゴミコードの方が価値がある。 一通り見て作法がわからないと、っていうのはある程度プログラミング経験積んで、新しい言語の効力を最大限に発揮しないことには今よく知ってる言語で書いた方がいい場合でしょう TwitterAPIV2でpythonで自動投稿するツール作ってるんですが さっきまで投稿できていたコードで Your account is not permitted to access this feature. とターミナルに表示されるようになりました。 アク禁だと思うですが、Developer Portal見た感じ そういうメッセージは出ていません。 時間経てばまた使えるようになるでしょうか わかる人いれば回答ほしいです。 それか適切な質問スレ教えて欲しいです。 少なくともPythonの話じゃねーな 同じやり方ならどんな言語でもそうなるだろって なんか特別なライブラリ使ってんなら別だけど >>622 すみません、TwitterAPIに関するスレ探したんですがみつけられなくて twitterはめんどくさいのでcookie読ませてselenium とっくの昔に滅んでるがな x86はソースコードみたいなもので、全然別の命令セットに翻訳して動いとるよ x86もうダメぽと Intelが IA-64を出したけど、AMD64 (x86)に敗けちゃった。 結局バイナリ互換という強みに 誰も勝てないんだよな 不連続な変化は許容されない SurfaceやMacのx64エミュレーションはそこそこ動くし ユーザじゃなく設備とか特許とか提供側の都合じゃないかな 疑似的ボイス・トォ・スカル 組織はある程度大きくなるけれど構築方法 @Bluetooth v5.4 マルチ説ぞ可能なので同時に100に接続可能 飛距離は最大400メートル Aピンマイク.完全ワイヤレスイヤフォン【マイク付き】 ★これで司令塔を中心としたエリアが構築官僚 Bピンマイクのみの者は超指向性スピーカーにて指示を受けている 少し上のシステム C家の防犯カメラを道路が映るように設置 Dすまふぉのai機能拡張により仲間の未認識させる E口パクによる読み取りやジェスチャーやアイコンタクトによりさらに指示できる内容を増やしている @司令塔となる者にスマフォと全てのBluetoothをペアーリング AaIアシストにより各仲間に隠語で話すウ B警察にばれてモスク罪にAIによるアシストで行動パターンの変化をさせる 空き巣後の闘争中に路地に引き込んでの警察車両の足止め 仲間は通貨そのあとに車の故障で立ち往生これを繰り返す 万引きもチームプレイをすれば店員.万引きジーメンなどもかいくぐれる ネットを返していない特設通信なのでサイバー警察からも逃げれる >>594 > この時代人工知能以外のIT技術って何を習熟していけばいいの? > もうjavaとかc#で文法以上の何をすればいいか分からん 就職先によってやることが違ってきますからね。 なんとも言えないんですが、 でも、俺が学生時代の自分に伝えるとしたら、 1.計算機の基礎(アセンブラ)を勉強してモニタ(OS)とコンパイラを作れ。 2.統計学の基礎理論を徹底的に勉強しろ。(数学もね!) 3.論文を書いて投稿しろ。教授か先輩に論文の書き方を教えてもらえ。(できれば英語で) ですかね。 あなたの状況や能力が不明なのでなんとも言えませんが。。。 >>634 全く参考にならんな、そんな僅かなシェアの仕事を例にあげられても 計算機科学を応用せずに、計算機科学そのものを仕事の対象にして食っていけんものか >>636 フランスに渡米してMITやStanfordの教授にでもなれば pandas使いたかったから公式読んだが英語で全然わかんねーわ 翻訳も効果薄いし 仕方ないから日本語検索やcopilotでやりたいことだけ調べたんだが、みんな英語のマニュアル余裕で読めるの? /\ / ヽ\ / ヽ \ / \ / ヽ \__ / ヽ \ / ‐_ ヽ ―――__/ ヽ \ /  ̄ / __ ヽ \ |  ̄ \ | | | || | | ゝ_ |||/ | | ( ・ ブ ゝ__ ┃ ┃ | |  ̄ ( ・ ̄ ̄ ブ ┛ ┗ | | ゝ__ ノ ━┓ ┏ | ┃ ┃ | __  ̄ ┃ | ┃ ┃ | | ̄ ̄ーヽ | ┃ ┃ | | ヽ | | | |ヽ | ━┓ \ _⊥_ | | ┃┛ \  ̄ ̄ヽ_⊥ | \ | ┏━┓ \ / ┏┛ \ / ・ | | | \ / \ / \ コンピュータ英語ってありきたりな表現しかないし翻訳の精度も悪くない そのドメインの基礎知識が足りないだけじゃ >>642 日本人でも読み書きは普通に出来るし得意な奴は多いぞ 日本人が苦手なのは聴くと話すな訳で… >>642 大卒なら普通に読めるだろ 読めないってのは大学受験してないか 推薦でしたといってるようなもんだぞ 恥ずかしいから言わないほうが良いぞ 翻訳で「パンダ」って出てきても動物の方じゃないことは分かるしな >>647 Twitterとかでも英語わかんないとか言ってる奴いてお察し その発言自体がやばいと認識できてない それなりの大学に行ってるやつは英語ができるのが当たり前という意識がない 文系なら言わずもがな 理系でもセンターで英語はやる 英語を捨てて受かる大学などない テストでちゃんと実力は判るので問題なし 英会話はできないけど、それは論文読むのに不要 やりたい人は個人的に駅前留学で 駅前のハワイでおしぼりポンと抜いて シコシコピュしてもらって英語もばっちり なわけない 実際、read/writeとlisten/speakだと役に立つ度合いは圧倒的にR側だと思う toeicだとLも同じ比重でテストされるので、ちょっと特訓するとスコアどんどん上がる Rのスコアはもう上がらない お前らスレ違いの話を、下手くそな日本語でずっとしているな 普通に喋れて外資系の会社で海外メンバーとコミュニケーション取りながら働けたら給料余裕で一千万円越えるから エンジニアとして並レベルでもな Pythonの検定てとっておいた方が良いです? 受かれば会社から補助は出るので金銭負担は実質ないけど pythonそのものは1日もあれば理解できるけど、 各モジュールの使いこなしは1年経っても途上 どのモジュールが必要かも判らない状態で一律に検定できる訳がない 会社はそれで営業力上がるんだから取ってあげればいい brew経由でアップデートしたら、急に仮想環境じゃないとパッケージをインストールできないとか >>663 brewで直接導入できるpythonは他パッケージも使うものだから システム部分をカスタマイズする使い方は避けたほうがいい やるならpyenv等で独自に導入する >>665 3.11までは問題なかったんだけど PEP 668 とかいうので急に。 anacondaもプラン登録とかめんどくさそうなので、pyenvが良いですかね。色々乱立しすぎて辛い。 pythonの環境構築は色々ありすぎるな(´・ω・`) 嫌々pyenvにしたら、普通には使えるもののjupyterからは!which pythonでpyenvのものが参照されるのに、python自体はmacのdevtoolの3.9を参照してたり、まじで意味がわからない。macもpythonもセキュアにしようと思ってるのか厳しくなり過ぎじゃないの。 もう嫌になってシステムのpythonにインストールしようとしたら、インストールできないパッケージもあり頓挫。環境構築がつらすぎる。 >>668 JupyterでつかうPythonはJupyterのカーネル設定で行う !はシェルの結果なので関係ない そこは昔から変わってない jupyterのカーネル設定で、なぜか新しいのが認識されない。消した古いのpyenvを延々に参照したりしてる。minicondaもパスが自動で通ったり通らなかったり、プログラミング以外の部分があまりに辛すぎ。こりゃ大学もcolabになるわ。。。 >>670 docker使えよ なんで生で使ってるんだ venvも現在のpython環境との依存があるから大して便利でもない pythonの環境作るのにpythonが必要な時点でナンセンスなんだよ pythonのバージョンをとっかえひっかえして使いたい人にとってはそうなのかもしれんが 俺はあんまり気にならんな Linux のローカル開発なら、Docker を使うのが簡単だが、 日本人が作った、多言語バージョンマネージャーのanyenv で、rbenv, nodenv も使える。 pyenv も同様。 asdf でも、多言語の好みのバージョンを入れられる echo $(anyenv root) ただし、$ANYENV_ROOT は定義されていない /home/ユーザー名/.anyenv echo $(rbenv root) echo "$RBENV_ROOT" /home/ユーザー名/.anyenv/envs/rbenv echo $(nodenv root) echo "$NODENV_ROOT" /home/ユーザー名/.anyenv/envs/nodenv システムに最初から入っているバージョンをいじってはならない! 他のアプリがシステムバージョンを使っているから、 それを変更すると、多くのアプリが動かなくなる だから開発環境は、自分だけのユーザー環境以下の /home/ユーザー名/.anyenv 以下に入れる システムバージョンは、 file `which python`, file `which python2`, file `which python3` で確認できる。 /usr/bin/python, /usr/bin/python2, /usr/bin/python3 など pythonの仮想環境とやらがよくわからない こいつら裏で何してんの? 単に特定のディレクトリに別のpythonをインストールしてるだけ 使う時は環境変数を切り替えてそのディレクトリを参照するようにしてる >>680 pythonは3.8、3.9、3.10、3.11と無限にバイナリを変える方針になったから もうそれじゃ無理なんよ 完全に破綻する >>684 サポート切れとかでもない限りユーザーが必要なバージョンを使い続ける形でなんの問題もない 読みができるなら、自動翻訳が正しいかチェックできるので、書けるのと同じ >>686 サポートがすぐ切れるのがpythonのモジュールの特徴 パッケージなら自分が困るような不具合が見つかるかauditで指摘が上がるまで使い続けるかな 一生懸命最新バージョンを追いかけるモチベもないし そんなマイナーパッケージを使う方が悪いし、そもそもPythonとは関係ないだろw 普通に関係あるでしょ Pythonのライブラリは古いバージョン対するサポート期間よりも 新しいバージョンへの対応がめちゃくちゃ遅いほうが問題 メジャーなライブラリでも3.12対応してないものまだまだある どんなプログラミング言語でもあることだし、使いたいライブラリに合わせてPythonのバージョンを選ぶくらい普通のことでは JavaみたいにEOLまでの期間がめちゃくちゃ短いならわかるけど、 3.9ですらあと1年以上あるでしょ そもそもOSSにそこまで期待してもねえ 金払って作らせてるならともかく 3.12を使わなければならない理由があるの?あるのだとしたら自分で直すぐらいの気概でいる必要があるのでは pythonで顔を検出してモザイクかけるのができるのなら 陰部に自動でモザイクかけることもできる? というかそういうソフトってあるの? >>695 陰部がそのままなら難しくは無い だけどオモチャだったりプレイだったりすると判定が難しい まあ顔もそうでしょ パーティグッズみたいなの付けてたら判定難しいのと同じ >>694 メジャーなライブラリが言語の新バージョンに対応するのに 半年〜1年かかるのが常態化してるのはPythonだけ Java、C#、Go、Swift、Ruby、JavaScript、PHPあたりではなかなか見ない 3.9は去年の10月でSPEC 0のサポートが切れてるから特別な事情がない限り選択肢としては無い Numpyとかでも既に落とされてる 言語の公式サポートは5年と長いけど ライブラリの関係で実質サポートは2年〜2年半程度と短いのが実状 >>696 プレイは難しいか… Inpaint-Anythingみたいなので頑張るしかないのな… 手動はもう嫌だ… >>694 JavaよりPythonのほうがランタイムのEOL短くね? 来年のEOLでどう更新するか既に頭痛いぞ お前らそんな事気にしてるのか? 客先でWindows95でVB5で動くシステムが現役で今でもメンテと追加機能開発が普通に有るんだぞ ちなみその客は大手チェーン店で件のシステムがインスコされてるPCが5万台だぞ クローズドだからいいんじゃね 本当にクローズドならな FC98がいまだに使われてるこんな世の中じゃ~(´・ω・`) ベーシックマスターLv2が半導体製造装置の制御に使われてるの見た時はびびった 今のpcのスペックにwin95でSSDとかなら胸が熱くなるなw 30年前のOS動いてるのを観測するとちょっともう1回見たくなる 大きな駅とかイベント会場に設置してある電子看板とか偶にシステムエラーでデスクトップ画面見えるけどWindows95とか多いからね 顔検出のやつでこういうの見つけたんだけど https://huggingface.co/Bingsu/adetailer import cv2 from PIL import Image img = "https://farm5.staticflickr.com/4139/4887614566_6b57ec4422_z.jpg" ; output = model(img) pred = output[0].plot() pred = cv2.cvtColor(pred, cv2.COLOR_BGR2RGB) pred = Image.fromarray(pred) pred これをどういじれば赤枠内をモザイク処理させることができる? デジタルサイネージ Windowsでググると面白いな 95 98 MEでまだ動いてるんだな パチンコ屋のパネルはなんでぶっ壊れても直さないんだろうな Windows95は起動してるだけで何もしてなくても1週間で落ちる(面倒なので原因は追求しなかった) >>694 専ブラ動かすのにしか使ってないから実情知らんけど JavaはLTS選べば長い方になるんじゃね 今からなら17 >>707 FC知らないのかガキめ if a < b: flag = True else: flag = False は flag = a < b と書ける 圧倒的にすっきりするけど、なんか頭に入ってこなくなる どっちがいいんだろ 別にどっちでも良い 細かいことを気にし過ぎ ただし頭に入ってこないってのは不味い 自分は書かなくても書かれてるコードを理解して頭に入る様にする必要はある 理解できない訳はないけど 0.1秒で判るか0.5秒かかるかという話 >>721 普通はどっちもダメ 単純な比較結果をフラグ化したりしない そんなこと言ったらflagという名前も具体的でないのでNG >>721 現実に前者を書くことは無いような気がする。大抵は、 if a < b: flag = 'hinomaru' else: flag = 'union jack' みたいな使い方でしょ。 a < b の評価値を保存したい場合は、自然と後者になるように思う。 filled = bool(count == limit) みたいにbool()使ってたな Pythonのand/orはbool返さない場合あるし 霊感的には、それは、 (flag = a) < b と解釈させたら、 flagがtrueかfalseにより動作が 違くなるような気がする。というか flag ← (a < b) って感じで ゼッタイ何時でもπソンは解釈するのだろうか。 flag = True if a < b else False flagの代入以外に副作用ないならまずこう書くけど flag = a < b でいいやんとなる >>728 >(flag = a) < b と解釈させたら Pythonの場合はflag=aがstatementで値を返さないのでそういう解釈をさせることができない (flag=a)だけでもassignment statementの文法に反してるからエラー (flag := a > b)と(flag :=a) > bでflagの値が変わる 前者が後者のように評価されないのは演算子の優先順位で決まってるから >>726 >a < b の評価値を保存したい場合は、自然と後者になるように思う。 boolを返すa < b を保存するのが妥当な場合ってどんな用途を想定してるの? ・a < bの処理にそれなりの時間がかかる ・a < bの結果を繰り返し使う ・比較演算子がbool値を返す ・関数ではなく演算子を使うのが妥当 俺は↑これを全部満たすような用途は思いつかない いずれにしろflagを使うほうのコードも含めて考えたほうがいいように思う >>732 > ・a < bの結果を繰り返し使う 繰り返しというか、後で使いたいのだろうな。 a と b 各1ワードを保存できる余裕はないけれど、評価結果 1ビットなら64個保存できる! みたいな。いつの時代の話だよ... 元は、後でif文で使う条件が複数あって、最初Falseで初期化して、 一つでも成立したらTrueにして、みたいな処理になってた で、いろいろリファクタリングしてる途中で、>>721 みたいな変形があった 最終的には条件が1つになったのでそのままif文に入れた a, bが不変であっても 変数化することでコードの見通しがよくなるなら 情報が冗長になってもそうする 現実ではしないflagって命名に囚われてそう >>735 それは条件が複数あったとしても条件式部分を関数化して関数内で早期リターンするパターン forの中でアーリーcontinueとか、関数からアーリーreturnは便利に使うけど、 抜ける先が無くてアーリーなんやらできないと困る 関数内関数はなんか読みにくいし 735みたいに、コードの詳細がわからないのにこう書くべきって決めつけてくる人ってなんでなのかな 理想的なケースでは切り出しやすくても、泥臭いケースだと切り出しても見通し悪くなるだけ、みたいなこと よくあるのに >>739 話題の発端の人だろ、 >>735 は。 仕様書を書いてないから、条件分岐の意味がわからなくなるんだよ。 >>739 >>740 ごめん、まちがえた。737だった。735すまん。 たくさんのファイルを3ステップで加工したい 一つずつやると時間かかるので、並列処理させる 全ファイルをステップ1処理 -> 全ファイルをステップ2処理、という感じ それでかなりスピードアップはするけど、 ステップの継ぎ目部分で全体の完了を待つのが無駄 全体は待たずにファイル毎にどんどん先に進む並列処理を 簡単に書くモジュールある? >>748 処理がファイル間で独立しているならmultiprocessingモジュール Unix環境ならxargsコマンドで足りる話にみえるけど concurrent.futuresモジュールのが書きやすいかもしれん どっちも見てみて あんまりいいサンプルが見つからない キモは、プロセスの実行に条件があるという点 file1-step1が完了してないとfile1-step2は実行できない 必要なプロセスを全部登録して実行させるとそんなことは考慮されないので、 どのプロセスが実行可能か依存関係を教えてやらないといけない モジュール使う分には単純だから公式ドキュメント読んで https://docs.python.org/ja/3/library/multiprocessing.html https://docs.python.org/ja/3/library/concurrent.futures.html それでファイル単位に並列にして ファイルを引数にstep1/step2を関数化したら後は呼ぶだけよ あるいは外部コマンド化して cat paths | xargs -IZ -P $(nproc) sh -c 'step1.py Z; step2.py Z' step1とstep2でプロセスを分けずに全体を1つのプロセスにするということかな 実際にはそれぞれで別のexeファイルを実行するのでなかなか難しい for file in files: step1.exe file for file in files: step2.exe file という形じゃなく step1.exe files step2.exe files という形で実行してるなら各exeがファイル毎に進捗報告やコールバックしてくれないと ファイル単位で処理を先に進めるのは無理 前者でやってるならやりようがあるけど ファイル単位じゃなくステップ単位にまとめるとスピードアップしたということなので その原因を先に確認した上でやり方考えたほうがいい 性能向上のための並行/並列化は 具体的な処理内容やワークロードの特性によってアプローチが変わる one size fits allなやり方は存在しない 何を言ってんだこいつは プログラミング言語の前に国語をやり直せ そうだな>>748 を100万回読み直して相手に何が伝わってると思うか感想を述べよ >>752 >'step1.py Z; step2.py Z' これは'step1-3.py Z’でよくない? キャッシュされてもインタプリタ起動のオーバーヘッドはそれなりにかかるので >>755 なるほど 実際にはまだ何も並行化/並列化できてないという話なのか >実際にはそれぞれで別のexeファイルを実行するのでなかなか難しい だったら↑この思い込みを捨てることから始めたほうがいいよ 結局のところPythonで並行/並列化するなら以下の4択なので 具体的な処理内容とワークロードの特性を加味して適切なものを選んでね 1.非同期 2.マルチスレッド 3.マルチプロセス 4.非同期+マルチプロセス 結局、 proc1.exeをsubprocess.Popen()で並列処理 proc2.exeをsubprocess.Popen()で並列処理 proc3.exeをsubprocess.Popen()で並列処理 となっていたものを、 proc1.exe proc2.exe proc3.exe を実行するbatファイルに移動させて、 batファイルをsubprocess.Popen()で並列処理で目的は達成できた batファイルかー、という気もするけど、並列処理で依存関係を気にした例は見つからなかった (並行処理なら普通) バッチファイルのことをbatファイルと書いているのは初めて見た マジか "バッチファイル" 473,000 "batファイル" 134,000 だから少数派ではあるけど、22%くらいの勢力はあるのに そもそも、batファイルを使った経験自体が少ないのでは >>758 テキストファイルの操作みたいだけど、そういうのは処理範囲を指定して同時に動かすんだよ。 >>760 batファイルという書き言葉は最近、発生しているようだけど、一般書籍でもマイクロソフトでもbatファイルとは呼んでいない。 日本語ではバッチファイル、英語ではbatch file。 バッチファイルを使ったことがないというのは、シェルスクリプトを使ったことがないというのと同じで、Pythonコードも動かいたことがないと思われてしまうレベル。 >>762 ステップは行という意味に思われるからやめた方がいい >>762 複数のファイルと書いてあったな。 並列化には担当するファイルを分けるなどいくらでも方法はある。 マルチプロセスの日本語訳が並列処理、マルチスレッドの日本語訳が並行処理だが、英語ではマルチという言葉で同時実行という言葉ではない。 同時実行という意味を付加しているのは日本語。 EXEファイルを二重起動とかPythonもバッチファイルも関係ねえな 実行ファイルを引数なしで実行するとか、シリアル前提処理を多重起動して、想定どおりにならないとか狂っんなw ID:poYagYhe0 は自作自演のネタ野郎だった >>763 batファイルでも別に普通じゃない? 拡張子batのファイルには違いないんだし txtファイル、jpgファイル、mpgファイルと同じだよ テキストファイルの拡張子をtxtとしているのはWindowsの世界だけ Windowsを使っていてバッチファイルを知らないなんて素人だろ >>770 拡張子は拡張子でしかない JPEGのファイルの拡張子はjpegが本来の拡張子で、jpgはWindows、MS-DOSの拡張子は3文字までという仕様で発生したもの。 さらにWindowsのデフォルト設定だと拡張子を表示しないんだぜ? 何をどう勘違いしているのかな。 拡張子がhtmlだとhtmlファイル、拡張子がhtmだとhtmファイルだと呼ぶなら、単に無知をごまかしているだけ バッチファイルはマイクロソフトの命名のセンスが悪かっただけだが、バッチファイルと作っている会社が言っている名称を使うのが素直 拡張子が3文字だと思っている疑惑があるのと、UNIX、Linuxの世界では拡張子はあくまで目印にすぎない ファイルが何のファイルかは少し読み込んで判断する WindowsでUTF-8のテキストファイルを扱う場合は、テキストファイルにBOMという情報を先頭に書く シェルスクリプトも1行目に自分自身の種類と何で実行するのかを書く どうでもいいことで盛り上がってんなww batファイルってのは同じバッチファイルでも.cmdじゃなく.batだぞってこと htmファイルも同じ まあ個人的には.batファイルのようにドット付きでなら書くけどドット無しでは書かないな >>758 proc1.exeをsubprocess.run() proc2.exeをsubprocess.run() proc3.exeをsubprocess.run() ↑この一連を関数にまとめればbatファイルはいらない それとまとめた関数は直接Popenじゃなくmultiprocessing経由で処理すれば Poolを使う分だけオーバーヘッドが減る あと処理内容次第だけどasyncio使って全部非同期ににしたほうが コードは多少面倒でもリソースが減って速度も出る可能性もある Pool版も問題なく動いた if __name__ == '__main__': が要るのね 子供がエラー出てもなんも判らんのな get() すると判るけど、マルチプロセスにならないので、デバッグ終わったら外す グローバル変数経由で参照させようとしても見えないとか罠がいろいろ apply_async(func, args=(arg,)) の余計なコンマもなんじゃこれと思ったら、無いと動かないんだよな そんなもんバグやがな グローバル変数が参照できるかどうかは処理系依存な気がするんだよな Copy-On-Writeでプロセス増やしてたら普通に参照できる筈 そんな互換性の無いコードが書けていいのかとは思うけど さすがにこのレベルの基礎を押さえていない人は 自称Python初心者でなくても↓こちらのスレへどうぞ >●関連スレ● 自称初心者は↓へ >【まず1嫁】くだすれPython(超初心者用) その59 >https://mevius.5ch.net/test/read.cgi/tech/1689241721/ 要素1個のタプル 1, 要素0個のタプル () なんでやねん コンマこそがタプルを表しているなら、コンマだけが空タプルの本質だろうに 冗長に書いて(,) でもエラーになる コンマがタプルで括弧はおまけだけど空の時だけ例外ルール >>790 あのさ(1)だとタプルじゃなくてただ数値がカッコで括られてるだけと判別出来ないだろ >>792 要素数が変化しない空のシーケンスを表現するためにある fが引数1個を取る関数、gが引数を取らない関数だとしたら apply(f, (1,))とapply(g, ()) のようにempty tupleを使うのが理にかなってる SQLで書いてるクエリをSQLAlchemyでORMにしたいのに 全然出来んわ、半分諦めかけてる なんかコツとかないんか? word1かword2かword3のいずれかがstrに含まれているかどうか はどうやったらすっきり書けるだろう 内包表記なら書けるけど、 if (word1, word2, word3) in str くらいの判りやすさが欲しい すぐに思いつかないようなゴルフが仮にできるとしても 関数化した方がわかりやすいとおもう any(w in str for w in words)で不満か? >>798 >>796 さんは「すっきり」と仰っていますが。 # 敢えて反語法で表現しました。 >>800 (word1 in str) or (word2 in str) or (word3 in str) を、すっきり書きたいのですと。 list in str を許容するように文法を変える 結果のリストが得られるので、 any(list in str) みたいに使う >>796 ここで言うstrって変数じゃなくて型か? any([isinstance(x, str) for x in (word1, word2, word3)]) any(map(isinstance, (word1, word2, word3), [str]*3)) 関数一つかますしか無いだろうな def find_words(list, str): return [w in str for w in list] print(any(find_words(['a', 'b'], 'bcde'))) 、pythonでWEBスクレイピングをしてるのですが、タスクスケジューラで動かすと画面が欠けます。 ログイン中だと問題なくでます。 なぜかサイズ指定しても効かないのですが、タスクスケジューラで登録して自動実行させてる方いませんでしょか? >>810 「ユーザーがログオンしているかどうかに関わらず実行する」が選択された場合、 タスクはセッション0のデスクトップが無い環境で実行される(Vista以降) 通常のブラウザでイスクレイピングをしたければ適当なアカウントにログインしていなければならない またはヘッドレスモードのあるブラウザなら動きそうではあるがどうだったかな >>811 ありがとうございます。 ヘットレスモード試してみます。 まずはログインした状態でタスクスケジューラ起動とかが一番近道かもですね! >>796 s = set(str.split()) if {word1, word2, word3} & s != {}: ... >>796 ごめん間違えた s = set(str.split()) if {word1, word2, word3} & s != set(): ... 配列のインデックスが1じゃなく0から始まる利点て? 0の方がいろいろ合理的だけど、 printf(f'{count+1}') とかやるよな 範囲を示す時に始点と終点よりも、始点と終点+1(次の要素の始点)の方が 便利なケースが圧倒的に多いけど、なんか怖いので愚直にやる >>813-814 スマソ、なんか Trueにならなくね? >>> word1 = 'abc' >>> word2 = 'def' >>> word3 = 'ghi' >>> sstr = 'aaabcddd' >>> s = set(sstr.split()) >>> {word1, word2, word3} & s != set() False >>> s = set('zzzzzzz'.split()) >>> {word1, word2, word3} & s != set() False >>> >>815 Pythonって配列無いんじゃ?リストやろ C言語系とかの配列的に添字が0から始まるのはメモリアドレスを計算する時に高速な為 1. {'sss'}.issubset({'s', 'ss', 'sst'}) 2. strings = ('miss') ret = any([s for s in ('s', 'ss', 'ss') if s in strings]) 3. filter(lambda s=s: s in strings, strings) 4. strings = ('ss', ) is_in = strings in ('s', 'ss', 'sss') ヒント 画像情報 テレポート エネルギー 瞬間にどう 観測結果論部あり ※情報とエネルギーを送れるのなら任意の波と線とHzを任意の場所で発生可能 上記の技術に脳内インプラントデータを対象者全身に送信で操り人形 地球外宇宙人もサイコパスが使用中 高度な科学を使用できていても自然環境も人間社会いも狡猾な者【人間を物として見る者】が圧勝 ガスライティング.ギャングストーカー.電磁波攻撃 等 現在の若者サイコパスで無い者は何%いるのかな? 地球派【マイクロ波聴覚効果】は違法でないので宇宙人が行っていても合法 別の惑星はテロに該当なので問答無用で戦争 マイクロ波は波の種類なので X線でマイクロ波を起こしているので お前に200回のx線を打ち込んだも理解できるでしょう ※5Gはミリ波で動的動作も追跡可能になるのでマイクロ波より便利 テラヘルツ波はミリ波と比べて現在不明なので研究中 何Hzの帯域は対象者周囲の状況に応じて変化していると思われるので 線種類 + 波種類 + 何hz + 使用w数 = 音波【音の高さ】? requests.get() したものに対して、 <meta charset= の内容を見てencodingを設定してくれる機能ってある? >>817 その条件では使えない 英文みたいに空白で単語が区切られている時に使える 部分一致はsuffix arrayみたいな重く複雑なsetが必要 ひょっとしたら何かエレガントな書き方があるのかもしれないが >>822 まずdecodeしないでmeta見れるの? apparent_encoding にするといいよという記事をよく見るけど、 encodingに困ってる時にapparent_encoding使うと悪化する 困ってない時は何もしなくていい 結局使い所が無い >>818 高級言語なのにそこにつっこむセンス 速度に影響するから知っておいても損はないけども むしろ内部実装でいうとlistは配列ちがう? >>826 エンコーディングの推論って日本語だとうまく機能しないよな 結局決め打ちして試すしかない 決め打ちしなくても、meta読めばそれが正解なんだよな 答えが書いてあるのに推測しようとして失敗する charsetに嘘書いてある事もあるから metaは参考程度 >>827 なんで配列がリストと同様だと思ったん? 「動的配列は配列じゃないリストだ」と言い張る人なんじゃね? それか何か根本的な勘違いをしてるか まあどうでもいいけど その辺の言葉の使い方は言語や人や実装によって違うからまずは定義をちゃんとして欲しいな 言語も何も指定せずにプログラム関連でリストというと、リスト構造を指すよな 基本情報も持ってないような奴はその辺のデータ構造としての配列とかリスト分かってないんだろ 大抵はリンクリストを指すのだろうけど動的言語あたりが好き勝手用語を解釈し始めて 動的配列を指すこともあるし一般的にモノが並んでいることをリストと言ったりもする ややこしい時代になったもんだ データ構造に言及しない文脈なら一般的に一覧とかリストで済ますでしょ PythonスレはVBAスレに並ぶ初心者が集うスレだからこんな議論が度々起きても仕方ない ごくごく一般的な言葉を環境特有の用語として使う馬鹿が悪い 数学なんかそんなんばっかり わざとだろと思うくらい 俺の投稿GW以降初なんだが馬鹿の自演言い訳扱いにされてんの? read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる