- 1 名前:デフォルトの名無しさん mailto:sage [2021/12/27(月) 01:38:10.93 ID:GepmXCuJ.net]
- 当スレに★Python以外のプログラミング言語での回答類を書くべからず★
派生言語はそれぞれ専スレがある(この板にあるとは限らない)ので、そっち池。 「Ruby」「Rails」「某言語では」「クソチョンw」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。 このスレッドは「お勉強」スレのほうには書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を、勇気を持って書き込むスレッドです。 へび使いが優しくコメントを返しますので、お礼は Python の布教と初心者の救済をお願いします。 ★エラーを解決したい場合★は、 表示されたエラーの全文(勝手に省略やスクショうp等の横着クソ行為禁止)と、 実行環境(Pythonのバージョン・OSとIDEの種類およびバージョン)をシッカリ書くこと。 Pythonの★ソースコードをそのまま5ちゃんに貼るとインデントが崩れてチヌ★ 【【【複数の連続半角スペースはなにもなかったことにされる&タブは普通には入れられない】】】掲示板の仕様なので、 プログラム文は↓等の、いわゆるコードうp用サイトに貼ってこいください。 ttps://techiedelight.com/compiler/ Run Code機能あり。 ttp://ideone.com/ デフォ設定はC用のため、言語選択ボタン押下がピコ手間かも。 ttp://codepad.org/ ほぼ直
- 835 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 23:04:11.07 ID:ll5AWkFj.net]
- >>815
re.subの引数に呼ばれるたびにカウントアップした文字列を返すreplacerを渡してやればいい
- 836 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 23:15:47 ID:pT174lS4.net]
- >>820
もうlocale知らん奴がいるんだなぁ
- 837 名前:デフォルトの名無しさん mailto:sage [2022/04/23(土) 23:29:24.04 ID:OEg3OW8V.net]
- >>816
これでどうだろう import subprocess, os my_env = os.environ.copy() my_env["PYTHONIOENCODING"] = "cp65001" input_text = 'あいう釙' line="" p = subprocess.Popen(('C:\\Users\\aa\\AppData\\Local\\Programs\\Python\\Python310\\python.exe C:\\Users\\aa\\Desktop\\ohayo.py'),stdin = subprocess.PIPE, stdout = subprocess.PIPE, shell=True, env=my_env) line=p.communicate(input=input_text)[0] print line 後出し条件追加は控えてくれると助かる
- 838 名前:デフォルトの名無しさん [2022/04/24(日) 00:03:00.76 ID:XmcVNZmY.net]
- > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑) キチガイの嘘つきの低レベルFランの、 朝鮮ゴキブリBot君は、 チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な ことはよーくわかったよ。 ホントなにもできない朝鮮ゴキブリBot君! クソチョンw クソチョンはウンコを食べる糞食人種w クソチョンはゲリ便をじゅるじゅると うまそうに食うw
- 839 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 00:16:33.35 ID:JO+3K+yc.net]
- >>824
my_env["PYTHONIOENCODING"] = "utf-8" のほうがわかりやすいかな
- 840 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 00:25:04.32 ID:lQs7d+0h.net]
- 外部コマンド前提だから古典Unix的に
間にiconvを挟むのが適当
- 841 名前:776 mailto:sage [2022/04/24(日) 12:08:29.52 ID:kM/BqeMC.net]
- >>824
ありがとうございます こんな方法があるんですね 驚きました まさか外国語も色々エンコードあるなんて思いもよらず 後出しになってすいませんでした >>827 どこにiconvというのを入れればよいのですか?
- 842 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 12:48:07.19 ID:PxrfmSzI.net]
- >>828
https://man.cx/iconv(1)/ja こういう外部コマンドがある。(ないなら導入する) python310.exe UTF-8出力するscript.py | iconv -f utf8 -t cp932 でcp932で出力するコマンドと同等になる。前に置くと入力も変換できる。 わかるとおもうがパスやエンコーディングは適当に読み替えて
- 843 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 13:28:31 ID:JO+3K+yc.net]
- 多言語処理するなら、824の方法でいいよ
iconvなんか使ったらエラー処理面倒くさくなる 他には、バッチファイルでchcp 65001する方法や、utf-8のファイルで受け渡す方法もある
- 844 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 14:10:53.30 ID:QXI/jpLW.net]
- いいわけないだろw
utf8決め打ちだけでいいなら苦労しない
- 845 名前:デフォルトの名無しさん mailto:sage [2022/04/24(日) 14:36:36.75 ID:JO+3K+yc.net]
- >>831
なら、794の処理を動く形でコード書いてよ 見て判断するよ
- 846 名前:デフォルトの名無しさん mailto:sage [2022/04/29(金) 22:25:05.85 ID:ir2De51z.net]
- Python関連から少し外れてしまうのですが、元々汎用系の技術者だったのですが、縁があってデータ分析の仕事に関わることになりました。
現在python3を手続き型の書き方でコード書いているのですが、オブジェクト思考に切り替えた方が良いタイミングやポイントありますか? 今のところ一人でpandasやpysparkを処理していて100行にも満たないくらいの小規模開発しています。 オブジェクト思考に憧れはあるのですが、まだ書いたことはありません。
- 847 名前:デフォルトの名無しさん mailto:sage [2022/04/29(金) 22:35:36.96 ID:5b8jykvI.net]
- ( ^ω^)汎用って何が汎用なんですかお?
- 848 名前:デフォルトの名無しさん mailto:sage [2022/04/29(金) 22:38:14.23 ID:ir2De51z.net]
- >>834
具体的にはコボラーメインでした
- 849 名前:デフォルトの名無しさん mailto:sage [2022/04/29(金) 22:41:18.84 ID:GNyXlK50.net]
- >>833
切り替える必要はありません オブジェクト指向は大規模開発を大人数で共有しながら進めるために 編み出された作法です そんなプロジェクトにPythonは使われません
- 850 名前:デフォルトの名無しさん mailto:sage [2022/04/29(金) 22:42:40.76 ID:ufUUo1o1.net]
- 今どきオブジェクト指向は…
- 851 名前:デフォルトの名無しさん mailto:sage [2022/04/29(金) 22:55:21.47 ID:ir2De51z.net]
- >>836
そうなのですね 可読性とか設計的にオブジェクト思考の方が優れているイメージがあり、汎用系出身のプログラマーとしては劣等感を感じています >>837 最近の流行り=メインストリームは何でしょう?
- 852 名前:デフォルトの名無しさん mailto:sage [2022/04/29(金) 22:59:31.83 ID:NGFGt/bW.net]
- >>836
> オブジェクト指向は大規模開発を大人数で共有しながら進めるため そんなことないだろw 継承とか具体的に使い始めるとたぶん 目からうろこだろ感動もんだろ鳥肌もんだろ汎用系からだと
- 853 名前:デフォルトの名無しさん mailto:sage [2022/04/29(金) 23:40:25.60 ID:Sf8HNHhp.net]
- 疎結合進んでひとりでも大規模開発できるようになるし
小規模でもアタマ楽になるし学習コスト顧みても利点の方が多い
- 854 名前:デフォルトの名無しさん mailto:sage [2022/04/29(金) 23:51:51.09 ID:ir2De51z.net]
- >>840
仕事中は時間の誓約もあるので手続型でコード書いちゃって、プライベートでは作りたいものなくてオブジェクト指向の本読んでも分かったような分からないような感じで実践できていません 皆さんはオブジェクト指向はどうやってマスターしましたか? デザインパターンの本を写経するのが一番なんですかね。。。
- 855 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 00:19:27.73 ID:bO9itIdJ.net]
- >>838
よほどクラス設計をきちんとやっておかないと可読性はむしろ落ちます 自分で書いたクラスでも三日経てばわからなくなります 結局のところ手続型で上から下に一直線にゴリゴリ書く方が速いし手直しも楽です ただしオブジェクト指向は作法ですから、チームが作法として採用している場合は致し方ありません が、先に述べたようにPythonでチーム開発などすることはまずありませんからご安心を
- 856 名前:デフォルトの名無しさん [2022/04/30(土) 00:49:48.45 ID:46aR4GCy.net]
- データ分析を書き下しでやるなんて聞いたことない
どんな小規模よそれ
- 857 名前:デフォルトの名無しさん [2022/04/30(土) 01:24:52.50 ID:03xdZc7H.net]
- データ分析で100行に満たないとなると、オブジェクト指向じゃないと思うけどなあ.
レコード同士の制約がRDBMSで取り扱えない範囲の制約だったらオブジェクト指向にした方がいいけど、 大体RDBMS的アプローチで十分じゃない? 分析手法が固まった段階で業務にいれこむとなるとちゃんとオブジェクト指向にした方がいいと思うけど、分析の段階だとPOCでしょ
- 858 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 02:13:55.43 ID:TTQ8Rhtz.net]
- 典型的なオブジェクト指向は、Ruby on Rails
でも、最近の言語、Go, Rust, Elixir などは、オブジェクト指向ではない。 オブジェクト指向の弊害の方が目立ってきたため Elixirは関数型
- 859 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 02:19:59.25 ID:38aggrlO.net]
- 頭の中で完結してるけど説明が下手なのか
書くうちに発散して纏まってないけどそのまま殴り書いたか ようわからん文章やな
- 860 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 02:22:55.20 ID:Zvv3yApT.net]
- ぶっちゃけSQLとパワークエリで事足りると思うんですが、会社がPythonメインでやるという方針なのでPython使ってます。pandasもpysparkもデータ分析用というより大量データの結合やデータ変換に使うことが多いです。
環境的には不要で自己満になるかもなのですが、今後のスキルアップのためにオブジェクト指向取り入れて開発したいなぁという願望があります。
- 861 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 02:25:25.49 ID:MSWmTJKz.net]
- おまえら素人ばかりだな
オブジェクト指向で作るのは理由があるからだ 理由は自分で考えろ
- 862 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 02:26:46.14 ID:Zvv3yApT.net]
- >>845
Elixeir初めて聞きました。新しい言語や関数型言語も出てきているのですね。。。
- 863 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 02:26:52.93 ID:MSWmTJKz.net]
- pythonメインでやる方針にも理由がある
理由は自分で考えろ
- 864 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 02:27:36.14 ID:MSWmTJKz.net]
- とにかくやれ
やらない理由はいくらでもあるから とにかくやる気があるうちにやるんだ
- 865 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 02:34:17 ID:MSWmTJKz.net]
- やってみて
わからなかったらいつでも質問しておいで
- 866 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 02:37:35 ID:Zvv3yApT.net]
- ありがとうございます
とりあえず挑戦してみます
- 867 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 05:55:28.21 ID:OR8SZm5l.net]
- >>835
COBOLに慣れてるならGnuCOBOLでも入れて色々遊んでみたらいいんじゃね? COBOL2002からはオブジェクト指向をサポートしてる
- 868 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 06:14:48.85 ID:Zvv3yApT.net]
- >>854
COBOLでもオブジェクト指向サポートしてるバージョンあるんですね! 時代の進歩に全然追い付けてないです
- 869 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 08:21:56.93 ID:nLS5ACA1.net]
- 妙だな…Pythonでチーム開発とか普通にあるけど
- 870 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 08:29:49.76 ID:mj6Qj3Uj.net]
- >>856
日本だと少ないとはいえ、チーム開発も少しずつ増えてきてるよな というか規模の大きな開発が増えてきたから 型ヒント周りの機能が強化されてきてるんだし
- 871 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 08:48:06.80 ID:UlwKMlAZ.net]
- YouTubeやDropboxがPythonで書かれてるけど、1人で開発されたなんて考えてんのかね、>>842 は
https://tech-camp.in/note/technology/45702/ DropboxのRian Hunter氏は「PyCon APAC 2013」で、Dropboxは全てPythonで開発していると述べています。コード量はサーバとクライアントのコードを全て合わせて93万7707行。
- 872 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 08:55:29.45 ID:0pJ/3NeQ.net]
- 一般的にpythonがーじゃなくて、そいつが職場で開発してるって条件下では大規模開発はありえないって話だろ
- 873 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 09:46:12.98 ID:2kJdiTOr.net]
- >>842の気持ちはわかる
たぶんバッチ処理主体でPythonを使ってる現場なんだろうけど、バッチ処理しか書けない奴って本当に一直線のコードしか書けないのよ 最近は業務系のそういう連中がPythonに進出してきていて、なかなか酷い状況だよ
- 874 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 12:04:18.69 ID:asMkUOFh.net]
- 一般常識として身につけておいたほうかがいいとは思うがpandasなんかを使ったデータ分析用途の場合はオブジェクト指向は極力避けて関数とデータを意識的に分けたほうが可読性もメンテナンス性も高いよ
SeriesやDataframeのようにデータとメソッドが不可分な独自の抽象データ構造をライブラリとして提供する場合にはオブジェクト指向を使ったほうがいい
- 875 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 14:35:51 ID:wjVEP1qN.net]
- Pythonはオブジェクト指向を学ぶのには向いてないよな
- 876 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 15:03:49.44 ID:Uatckw9k.net]
- >>860
その通りです 私はバッチ処理専門で開発していますが 関数すら極力書かないようにしています 関数を作ると処理の流れが行ったり来たりして読みづらいからです Cで言うとmain関数の中に全ての処理があるように書きます
- 877 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 15:17:02.34 ID:XZrd/bpX.net]
- >>863
関数の役割分担や命名をちゃんとしてないからでは? 関数はそれ自身で責任を追って実装・検証するもの 使う側は関数内部まで気にしなくても済むようにならないと意味ない なんで便宜上行ったり来たりは発生しない 外部ライブラリやビルトインの関数の実装までふつう追わないでしょ
- 878 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 16:40:05.60 ID:wcqGltd4.net]
- >関数すら極力書かないようにしています
さすがにそれはアカン 考えを改めた方がいい
- 879 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 16:45:43.84 ID:WuQ7ClRo.net]
- 個別の関数をmain関数と同居させる場合、
関数の配置の順序とかあるの? JSで関数を最後にまとめたりしているものがあったけど、 Pythonじゃ見かけないような
- 880 名前:デフォルトの名無しさん [2022/04/30(土) 16:56:56.93 ID:IElPr3np.net]
- >>863
コボラーですね分かります。 合言葉はIDENTIFICATION DIVISION。
- 881 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 17:15:45.06 ID:XOEt5cKu.net]
- >>866
JSはスコープごとにスクリプトを2回読むイメージで実行されるので 関数や変数の宣言は巻き上げられて先頭で宣言されてるのと同じになる Pythonにはそういう機能はないので1ファイルならmainの実行は最後にするのが普通 def main(): hoge() def hoge(): print(‘hoge’) main()
- 882 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 17:16:15.33 ID:Uatckw9k.net]
- >>866
他の言語は知りませんが、Pythonは関数を呼ぶ処理より前に 関数定義がないといけないんですよ だから関数のあるスクリプトファイルを開くと、まず関数の羅列が ズラズラと目に入るわけでして、文書を上から下に読んでいくという 人間の自然な動作に合わないのです
- 883 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 17:39:11.77 ID:PWl3mLPj.net]
- コボラーってやっぱアタオカだな
- 884 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 18:04:44.96 ID:64v4nlhT.net]
- >>869
def main(): sukinakansuu() def sukinakansuu(): pass if __name__ == '__main__': main() みたいに書くよ
- 885 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 18:07:46.92 ID:OR8SZm5l.net]
- >>866
Python の def 文は「実行文」だから定義される関数を呼び出す前に実行しないといけないのでJSみたいにするとエラーになる ちなみに実行文だから if xxx: def foo: print('foo1') else: def foo: print('foo2') みたいにして実行時に関数の定義を変えることもできる
- 886 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 18:49:26 ID:oMuBjy8I.net]
- 実行文??
- 887 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 19:22:27.31 ID:XZrd/bpX.net]
- https://docs.python.org/ja/3/reference/compound_stmts.html#function-definitions
式じゃないし識別子でもない単にそこで実行される文
- 888 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 21:51:14.91 ID:yu/EzU82.net]
- >>872
それ「実行文だから」とか全然理由になってない インタプリタ型の言語ならJSでもRubyでもPHPでも全く同じことできる 実行文ではないC言語でも定義より先に呼び出したらエラーになる
- 889 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 22:12:01.94 ID:o6QgUZIK.net]
- >>872
┏━━━━━━━━━━━━┓ ┃The image you are .┃ ┃requesting does not exist .┃ ┃or is no longer available. .┃ ┃ ┃ ┃imgur.com ┃ ┗━━━━━━━━━━━━┛
- 890 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 22:22:35.44 ID:64v4nlhT.net]
- seleniumでaタグをclickしてswitch_to.windows(driver.window_handles[1])しても<html><head></head><body></body></html>っていうページにアクセスするようになる
なんで無内容に?どうすればいいんだろう そもそもGUI上はクリックしてないんだけどなんだこれ
- 891 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 22:23:14.79 ID:OR8SZm5l.net]
- >>875
> インタプリタ型の言語ならJSでもRubyでもPHPでも全く同じことできる やれるね、だから何? > 実行文ではないC言語でも定義より先に呼び出したらエラーになる コンパイル言語で定義より先に呼び出し? 実行順序とソース上の順序を混同してるだろw
- 892 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 22:59:55.25 ID:64v4nlhT.net]
- >>877
解決 クリックしたあと2秒sleepさせたら出来た 読み込みに時間が掛かるんだな
- 893 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 23:11:39.76 ID:484odO/R.net]
- >>878
だから何じゃねーよww ダメだこいつw
- 894 名前:デフォルトの名無しさん [2022/05/01(日) 02:13:14.49 ID:b95w4aAB.net]
- >>875
C言語の場合、宣言すれば定義は後回しでOK。
- 895 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 05:53:28 ID:Rd1MW222.net]
- >>880
ダメなのはお前の頭だろw 他の言語なんて関係ないし
- 896 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 08:06:33.67 ID:JzdAzqq0.net]
- https://i.imgur.com/3qXlqVA.jpg
- 897 名前:デフォルトの名無しさん [2022/05/01(日) 09:40:22.97 ID:0ggTu6P0.net]
- 実行文って、コンパイル型言語で宣言文と区別する意味の用語だから、Pythonでは、完全にナンセンス
「実行文だから」は何の意味も持たない 実行文でない文は、逆にあるのか?
- 898 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 10:00:01.37 ID:aj8iUgGb.net]
- コンパイル言語?
JSにも宣言文はあるんだが
- 899 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 10:06:43.73 ID:KjQtFKQ9.net]
- インタプリタだって全部の行を一行ずつ実行しながら解釈しているとは限らないんだから区別はあっておかしくない。
- 900 名前:デフォルトの名無しさん [2022/05/01(日) 10:39:20 ID:c1q3P+1N.net]
- 宣言っていまいち意味わからんのだけど。
defは今の名前空間に新たにオブジェクト(function/callable)を作成するって捉える方がしっくりする。 だから、名前()で呼び出しするためには、その前に作成が終わってなきゃダメよね、ってなる。 って考えると、Pythonは上から下に順番に実行しかしていない、ってわかる。
- 901 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 11:07:07.83 ID:IDzy7BiL.net]
- 関数定義をまとめた関数をスクリプト末尾に書いて
それをスクリプト先頭で呼ぶようにすれば…と思ったけどダメですね ズラズラ並んだ関数定義を見たくない場合、定義部分を別スクリプトにして それをimportすればいいのかな?
- 902 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 11:28:22.49 ID:UqOJOPuh.net]
- 868のやり方じゃ駄目なんけ?main()の呼び出しを最後に書く以外は関数の並び順は自由だし、関数名がmainなら最初に実行されるだろうことは暗に容易に伝わる。
自分も呼び出すほうを上、呼び出されるほうを下に書くほうが読みやすいと感じるから常にそうしてるよ
- 903 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 11:54:47.68 ID:IDzy7BiL.net]
- >>889
自分はメイン処理をトップレベルに書く派なので 残念ながらこの手法は使えません しかし知識として知りたくはあります >>868ってmain()より下にあるhoge()をmain()から呼べるってことですよね それは何故でしょうか
- 904 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 12:26:54.53 ID:Dd8WxxXv.net]
- >>890
> 868ってmain()より下にあるhoge()をmain()から呼べるってことですよね > それは何故でしょうか main()が(定義される時じゃなくて)実行される時はdef hoge()も実行済みだから
- 905 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 12:29:09.32 ID:UqOJOPuh.net]
- そのこだわりはよくわからんな…
デメリットしか思いつかん
- 906 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 12:46:49.10 ID:JzdAzqq0.net]
- 相互参照している場合とかどうするんでしょうね?
- 907 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 12:52:31.00 ID:Yd4A+jrH.net]
- >>885
>>872で「実行文だから実行時に関数定義をかえることができる」と書いてるのは嘘だったってことかな?
- 908 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 13:24:18.52 ID:Rd1MW222.net]
- >>893
実行までに各々定義すればいいだけだからなんの問題もないだろ
- 909 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 13:25:01.76 ID:Rd1MW222.net]
- >>894
Pythonの話とJSの話の区別もつかない無能乙
- 910 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 13:46:20.12 ID:qrKdrkjM.net]
- どうでもいい話になってきてるような
スレタイにふさわしいと言えばそうだが
- 911 名前:デフォルトの名無しさん [2022/05/01(日) 14:07:59 ID:b95w4aAB.net]
- スレタイ通り下らない話で盛り上がってて実に素晴らしい。
- 912 名前:デフォルトの名無しさん [2022/05/01(日) 14:08:54 ID:QvrU5Mi0.net]
- エントリポイントのエの字も出ない
- 913 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 14:18:30 ID:Gwm1B3AE.net]
- >>891
実行というからおかしくなる 関数のシグニチャを評価するタイミングと 関数のボディを評価するタイミングの違い 前者が他言語でいう宣言文の役割 Cのプロトタイプ宣言とかと同じ Pythonでも宣言として捉えたほうが分かりやすいよ
- 914 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 14:20:32.48 ID:IDzy7BiL.net]
- >>891
うーんよくわかりません なぜ上にある関数から下にある関数を呼べるのか 私の脳はここまでです >>892 メリットが二つあります ・スクリプトの先頭から実行が始まるので流れを追いやすい ・メイン処理の字下げが一段少なく済む
- 915 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 14:40:33.88 ID:vJsN8meg.net]
- >>901
> 先頭から実行が始まる 先頭に書いてあるのがmain関数なら上から読み下せるのは同じじゃね?
- 916 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 14:53:14.40 ID:KjQtFKQ9.net]
- うちはスクリプトの末尾にこの2行、ってのが定番たわ。
if __name__ == '__main__': main()
- 917 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 15:06:46.08 ID:JzdAzqq0.net]
- >>895
https://i.imgur.com/1yUgMXq.jpg
- 918 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 15:10:06.70 ID:Rd1MW222.net]
- >>900
だからそんな思考回路だと if xxx: def foo: print('foo1') else: def foo: print('foo2') みたいなコード見たらなんで宣言2個あってもいいんだよ?ってなるだろ
- 919 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 15:11:46.01 ID:IDzy7BiL.net]
- >>902
main関数が処理の始まりかどうかは結局下を見ないと確定しないので… ならばトップレベルにメイン処理を書く方が安心確実と思う次第です []- [ここ壊れてます]
- 921 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 15:15:47.63 ID:4M5GqABF.net]
- def main(): hoge()
def hoge(): print(‘hoge’) main() Pythonの評価順は基本的に上から下に一行ずつ 1行目ではdef main():までの関数シグニチャのみ評価してボディは評価されない(それがdefの役目) 2行目も同じようにdef hoge():までの関数シグニチャのみ評価 3行目の関数呼び出し時にmain関数のボディが評価される そのタイミングではhoge関数はシグニチャが評価され関数として宣言済みなのでhogeを呼び出せる
- 922 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 15:20:45.71 ID:Rd1MW222.net]
- >>901
Pythonインタープリターの気持ちになって考えればわかると思うよ 1: def main(): 2: hoge() 3: def hoge(): 4: print(‘hoge’) 5: main() 1を実行する時は2の内容をmainで登録する(この時点では2自体は実行されない) 3も同様に4の内容をhogeで登録する 5のmainの呼び出しで2が実行されて4が呼ばれるので実行順は1→3→5→2→4のようになる
- 923 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 15:22:24.87 ID:Rd1MW222.net]
- >>906
そう思うのは自由だけどPythonでは無理だから諦めるか他の言語にするしかない
- 924 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 15:22:30.22 ID:F/hLZDCn.net]
- >>905
宣言が2個あったところで何が問題なの? 2個あったらエラーにするルールのある言語もあるけどPythonにそんなルールない
- 925 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 15:30:33.22 ID:vJsN8meg.net]
- >>906
確かにそのとおりだけど、あんまり他人を疑いすぎると禿げちゃうよ
- 926 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 15:36:27.81 ID:M2LDeL9g.net]
- これからはクラス定義もクラスメソッドも関数もごちゃごちゃにして途中でjson入れたり意味なく連想配列作ったりいきなりタプルにしたり判読し辛いコード書くことに決めた
初心者が初心者になる前に躓いて読めなくなるようにしていこう
- 927 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 15:37:45.97 ID:M2LDeL9g.net]
- オーバーライドしまくってやる
- 928 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 15:38:22.08 ID:M2LDeL9g.net]
- 意味なく戻り値にクラスメソッド使ってやる
- 929 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 15:51:18.35 ID:Rd1MW222.net]
- >>910
エラーにしない言語って何?
- 930 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 15:55:09.23 ID:zrtkQxP2.net]
- javascriptは同じ名前の関数が並んでてもエラーにならないな。後ろが使われる
- 931 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 16:00:48.30 ID:DfY2Iokg.net]
- グローバル変数・定数の定義とか、
場合分けしてモジュール等をインポートするときとか、 これらをサブ関数の中か、その前にグローバルで書くべきかいつも悩むわ モジュール等のインポート グローバル変数・定数の定義 場合分けによるモジュール等のインポート(環境依存) サブ関数の定義 場合分けによるモジュール等のインポート(環境非依存) メイン関数の定義 メイン関数の実行(>>903) これ、問題ある?
- 932 名前:917 mailto:sage [2022/05/01(日) 16:03:56.84 ID:DfY2Iokg.net]
- グローバル変数・定数の定義なんかも
サブ関数としてまとめて定義して、メイン関数で呼び出してグローバル宣言したほうがいいのかな?
- 933 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 16:08:44 ID:Rd1MW222.net]
- >>916
まあjavascriptはvarで同じ変数使ってもエラーにならないような言語だしね さすがに最近はletで重複させるとエラーになるみたいだけど
- 934 名前:デフォルトの名無しさん [2022/05/01(日) 16:30:44 ID:6txgexSj.net]
- 機能別にモジュール作って、関数詰め込んで使ってるんだが、合ってる?
- 935 名前:デフォルトの名無しさん mailto:sage [2022/05/01(日) 18:30:38 ID:tQAUcym9.net]
- 一連の流れ見てもよくわからんのだけど、質問は何なの?
|

|