当スレに★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/ ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/ まずまずシンプル。
ttp://dpaste.com/ とてもシンプル。消えるまでの日数は十分長ーく指定のこと。
◇Python公式◇ http://www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/wiki.cgi
〇前スレ〇 【まず1嫁】くだすれPython(超初心者用) その55
https://mevius.5ch.net/test/read.cgi/tech/1633070807/
次スレたては >>985 あたりが挑戦する。
### END OF TEMPLATE ###
探検
【まず1嫁】くだすれPython(超初心者用) その56
レス数が900を超えています。1000を超えると表示できなくなるよ。
2021/12/27(月) 01:38:10.93ID:GepmXCuJ
812デフォルトの名無しさん
2022/04/22(金) 21:03:59.41ID:7tkDjHFj >>811
ラッパー経由になるだけだから指定強制なんて意味ないでしょ
ラッパー経由になるだけだから指定強制なんて意味ないでしょ
814746
2022/04/22(金) 21:33:54.80ID:llHCzfDa815デフォルトの名無しさん
2022/04/23(土) 18:41:33.50ID:yaJafia3 テキストファイルの先頭からあるワードを検索し
1回目に見つかったワードを特定のワードに置換
2回目に見つかったワードをまた別のワードに置換
…
という処理を実装したいです
自分の知識だと、テキストを一行ずつ読み込んでは
正規表現でワードをサーチしカウンタを加算し
カウンタ値に応じてreplaceするっていうコードしか浮かばないですが
何か他に効率的・定番的な書き方があれば教えてください
1回目に見つかったワードを特定のワードに置換
2回目に見つかったワードをまた別のワードに置換
…
という処理を実装したいです
自分の知識だと、テキストを一行ずつ読み込んでは
正規表現でワードをサーチしカウンタを加算し
カウンタ値に応じてreplaceするっていうコードしか浮かばないですが
何か他に効率的・定番的な書き方があれば教えてください
816776
2022/04/23(土) 21:11:23.83ID:S27JpXaa 度々すみません。
>>794で教えてもらった以下の行を入れたのですが
line=p.communicate(input=input_text.encode('cp932'))[0].decode('cp932')
中国語(繁体語)をinputに入れたところ以下のエラーがでてしまいます
UnicodeEncodeError: 'cp932' codec can't encode character u'\u91d9' in position 0: illegal multibyte sequence
検索してみたところcp932に含まれない文字があった場合にでるみたいです
u'\u91d9'はこの字でした(釙)
https://0g0.org/unicode/91D9/
中国語(繁体語)をinputに送っていたので
以下を参考にエンコードをcp932ではなくてcp950にしてみたのですが文字化けしてしまします
http://docs.daemon.ac/python/Python-Docs-2.5/lib/standard-encodings.html
他にbig5やbig5hkscsも試してみましたが文字化けします
この文字化けはどうしたらちゃんと表示されますか?
こういった多言語を扱う場合どうしたら良いのでしょうか?
u'\u91d9'(釙)以外にもu'\ufe50'(﹐)などにも引っかかってしまします
>>794で教えてもらった以下の行を入れたのですが
line=p.communicate(input=input_text.encode('cp932'))[0].decode('cp932')
中国語(繁体語)をinputに入れたところ以下のエラーがでてしまいます
UnicodeEncodeError: 'cp932' codec can't encode character u'\u91d9' in position 0: illegal multibyte sequence
検索してみたところcp932に含まれない文字があった場合にでるみたいです
u'\u91d9'はこの字でした(釙)
https://0g0.org/unicode/91D9/
中国語(繁体語)をinputに送っていたので
以下を参考にエンコードをcp932ではなくてcp950にしてみたのですが文字化けしてしまします
http://docs.daemon.ac/python/Python-Docs-2.5/lib/standard-encodings.html
他にbig5やbig5hkscsも試してみましたが文字化けします
この文字化けはどうしたらちゃんと表示されますか?
こういった多言語を扱う場合どうしたら良いのでしょうか?
u'\u91d9'(釙)以外にもu'\ufe50'(﹐)などにも引っかかってしまします
817デフォルトの名無しさん
2022/04/23(土) 21:38:30.92ID:LTun4BN3818デフォルトの名無しさん
2022/04/23(土) 22:06:21.75ID:A38Z8Utb >>815
1行ずつ読み込みだとキーワードの途中改行に対応できない気がするけどいいの?
1行ずつ読み込みだとキーワードの途中改行に対応できない気がするけどいいの?
819デフォルトの名無しさん
2022/04/23(土) 22:33:39.38ID:7+1nJnMo 途中改行するキーワードなんて生まれてこのかた見たことない
820デフォルトの名無しさん
2022/04/23(土) 22:48:08.09ID:dSfqqc1i >>816
Windows の文字コードは、独特で誰も知らない。
たぶん、何百種類もあるでしょ
日本なら、CP932 だけに対応するけど、
全世界の何百種類とかに対応できない
そもそも、外人はCP932すら知らないし
CP何々とか、UTF-16 とか、Linux 用の全言語で処理できない。
Linuxは全言語、UTF-8 のみに統一されている
これ以外の特定の端末用言語、例えば、Windows PC 用言語などは、特殊
だから基本、システムで使ってはいけない。
システムはLinuxのみで、Windows PCは単なるクライアントとしてしか使えない
Ruby on Rails では辞書に定義することで、多言語化しているけど、
これはUTF-8だからできる
この文字はCP932、これはCP950 とか一々、何百種類に対応できない
Windows の文字コードは、独特で誰も知らない。
たぶん、何百種類もあるでしょ
日本なら、CP932 だけに対応するけど、
全世界の何百種類とかに対応できない
そもそも、外人はCP932すら知らないし
CP何々とか、UTF-16 とか、Linux 用の全言語で処理できない。
Linuxは全言語、UTF-8 のみに統一されている
これ以外の特定の端末用言語、例えば、Windows PC 用言語などは、特殊
だから基本、システムで使ってはいけない。
システムはLinuxのみで、Windows PCは単なるクライアントとしてしか使えない
Ruby on Rails では辞書に定義することで、多言語化しているけど、
これはUTF-8だからできる
この文字はCP932、これはCP950 とか一々、何百種類に対応できない
821デフォルトの名無しさん
2022/04/23(土) 22:49:34.40ID:Ac8uMNgs 置換だと検索文字として\n含むのはよくあるし
キーワードに改行なくてもワードラップがきちんとされてないテキストなんかだと改行コードに邪魔されてヒットしないこともよくある
そういうとこはやりたいことの条件しだいだからなんともだな
キーワードに改行なくてもワードラップがきちんとされてないテキストなんかだと改行コードに邪魔されてヒットしないこともよくある
そういうとこはやりたいことの条件しだいだからなんともだな
822デフォルトの名無しさん
2022/04/23(土) 23:04:11.07ID:ll5AWkFj >>815
re.subの引数に呼ばれるたびにカウントアップした文字列を返すreplacerを渡してやればいい
re.subの引数に呼ばれるたびにカウントアップした文字列を返すreplacerを渡してやればいい
823デフォルトの名無しさん
2022/04/23(土) 23:15:47.62ID:pT174lS4 >>820
もうlocale知らん奴がいるんだなぁ
もうlocale知らん奴がいるんだなぁ
824デフォルトの名無しさん
2022/04/23(土) 23:29:24.04ID:OEg3OW8V >>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
後出し条件追加は控えてくれると助かる
これでどうだろう
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
後出し条件追加は控えてくれると助かる
825デフォルトの名無しさん
2022/04/24(日) 00:03:00.76ID:XmcVNZmY > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
クソチョンはウンコを食べる糞食人種w
クソチョンはゲリ便をじゅるじゅると
うまそうに食うw
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
クソチョンはウンコを食べる糞食人種w
クソチョンはゲリ便をじゅるじゅると
うまそうに食うw
826デフォルトの名無しさん
2022/04/24(日) 00:16:33.35ID:JO+3K+yc827デフォルトの名無しさん
2022/04/24(日) 00:25:04.32ID:lQs7d+0h 外部コマンド前提だから古典Unix的に
間にiconvを挟むのが適当
間にiconvを挟むのが適当
828776
2022/04/24(日) 12:08:29.52ID:kM/BqeMC829デフォルトの名無しさん
2022/04/24(日) 12:48:07.19ID:PxrfmSzI >>828
https://man.cx/iconv(1)/ja
こういう外部コマンドがある。(ないなら導入する)
python310.exe UTF-8出力するscript.py | iconv -f utf8 -t cp932
でcp932で出力するコマンドと同等になる。前に置くと入力も変換できる。
わかるとおもうがパスやエンコーディングは適当に読み替えて
https://man.cx/iconv(1)/ja
こういう外部コマンドがある。(ないなら導入する)
python310.exe UTF-8出力するscript.py | iconv -f utf8 -t cp932
でcp932で出力するコマンドと同等になる。前に置くと入力も変換できる。
わかるとおもうがパスやエンコーディングは適当に読み替えて
830デフォルトの名無しさん
2022/04/24(日) 13:28:31.19ID:JO+3K+yc 多言語処理するなら、824の方法でいいよ
iconvなんか使ったらエラー処理面倒くさくなる
他には、バッチファイルでchcp 65001する方法や、utf-8のファイルで受け渡す方法もある
iconvなんか使ったらエラー処理面倒くさくなる
他には、バッチファイルでchcp 65001する方法や、utf-8のファイルで受け渡す方法もある
831デフォルトの名無しさん
2022/04/24(日) 14:10:53.30ID:QXI/jpLW いいわけないだろw
utf8決め打ちだけでいいなら苦労しない
utf8決め打ちだけでいいなら苦労しない
832デフォルトの名無しさん
2022/04/24(日) 14:36:36.75ID:JO+3K+yc833デフォルトの名無しさん
2022/04/29(金) 22:25:05.85ID:ir2De51z Python関連から少し外れてしまうのですが、元々汎用系の技術者だったのですが、縁があってデータ分析の仕事に関わることになりました。
現在python3を手続き型の書き方でコード書いているのですが、オブジェクト思考に切り替えた方が良いタイミングやポイントありますか?
今のところ一人でpandasやpysparkを処理していて100行にも満たないくらいの小規模開発しています。
オブジェクト思考に憧れはあるのですが、まだ書いたことはありません。
現在python3を手続き型の書き方でコード書いているのですが、オブジェクト思考に切り替えた方が良いタイミングやポイントありますか?
今のところ一人でpandasやpysparkを処理していて100行にも満たないくらいの小規模開発しています。
オブジェクト思考に憧れはあるのですが、まだ書いたことはありません。
834デフォルトの名無しさん
2022/04/29(金) 22:35:36.96ID:5b8jykvI ( ^ω^)汎用って何が汎用なんですかお?
835デフォルトの名無しさん
2022/04/29(金) 22:38:14.23ID:ir2De51z >>834
具体的にはコボラーメインでした
具体的にはコボラーメインでした
836デフォルトの名無しさん
2022/04/29(金) 22:41:18.84ID:GNyXlK50837デフォルトの名無しさん
2022/04/29(金) 22:42:40.76ID:ufUUo1o1 今どきオブジェクト指向は…
838デフォルトの名無しさん
2022/04/29(金) 22:55:21.47ID:ir2De51z839デフォルトの名無しさん
2022/04/29(金) 22:59:31.83ID:NGFGt/bW840デフォルトの名無しさん
2022/04/29(金) 23:40:25.60ID:Sf8HNHhp 疎結合進んでひとりでも大規模開発できるようになるし
小規模でもアタマ楽になるし学習コスト顧みても利点の方が多い
小規模でもアタマ楽になるし学習コスト顧みても利点の方が多い
841デフォルトの名無しさん
2022/04/29(金) 23:51:51.09ID:ir2De51z >>840
仕事中は時間の誓約もあるので手続型でコード書いちゃって、プライベートでは作りたいものなくてオブジェクト指向の本読んでも分かったような分からないような感じで実践できていません
皆さんはオブジェクト指向はどうやってマスターしましたか?
デザインパターンの本を写経するのが一番なんですかね。。。
仕事中は時間の誓約もあるので手続型でコード書いちゃって、プライベートでは作りたいものなくてオブジェクト指向の本読んでも分かったような分からないような感じで実践できていません
皆さんはオブジェクト指向はどうやってマスターしましたか?
デザインパターンの本を写経するのが一番なんですかね。。。
842デフォルトの名無しさん
2022/04/30(土) 00:19:27.73ID:bO9itIdJ >>838
よほどクラス設計をきちんとやっておかないと可読性はむしろ落ちます
自分で書いたクラスでも三日経てばわからなくなります
結局のところ手続型で上から下に一直線にゴリゴリ書く方が速いし手直しも楽です
ただしオブジェクト指向は作法ですから、チームが作法として採用している場合は致し方ありません
が、先に述べたようにPythonでチーム開発などすることはまずありませんからご安心を
よほどクラス設計をきちんとやっておかないと可読性はむしろ落ちます
自分で書いたクラスでも三日経てばわからなくなります
結局のところ手続型で上から下に一直線にゴリゴリ書く方が速いし手直しも楽です
ただしオブジェクト指向は作法ですから、チームが作法として採用している場合は致し方ありません
が、先に述べたようにPythonでチーム開発などすることはまずありませんからご安心を
843デフォルトの名無しさん
2022/04/30(土) 00:49:48.45ID:46aR4GCy データ分析を書き下しでやるなんて聞いたことない
どんな小規模よそれ
どんな小規模よそれ
844デフォルトの名無しさん
2022/04/30(土) 01:24:52.50ID:03xdZc7H データ分析で100行に満たないとなると、オブジェクト指向じゃないと思うけどなあ.
レコード同士の制約がRDBMSで取り扱えない範囲の制約だったらオブジェクト指向にした方がいいけど、
大体RDBMS的アプローチで十分じゃない?
分析手法が固まった段階で業務にいれこむとなるとちゃんとオブジェクト指向にした方がいいと思うけど、分析の段階だとPOCでしょ
レコード同士の制約がRDBMSで取り扱えない範囲の制約だったらオブジェクト指向にした方がいいけど、
大体RDBMS的アプローチで十分じゃない?
分析手法が固まった段階で業務にいれこむとなるとちゃんとオブジェクト指向にした方がいいと思うけど、分析の段階だとPOCでしょ
845デフォルトの名無しさん
2022/04/30(土) 02:13:55.43ID:TTQ8Rhtz 典型的なオブジェクト指向は、Ruby on Rails
でも、最近の言語、Go, Rust, Elixir などは、オブジェクト指向ではない。
オブジェクト指向の弊害の方が目立ってきたため
Elixirは関数型
でも、最近の言語、Go, Rust, Elixir などは、オブジェクト指向ではない。
オブジェクト指向の弊害の方が目立ってきたため
Elixirは関数型
846デフォルトの名無しさん
2022/04/30(土) 02:19:59.25ID:38aggrlO 頭の中で完結してるけど説明が下手なのか
書くうちに発散して纏まってないけどそのまま殴り書いたか
ようわからん文章やな
書くうちに発散して纏まってないけどそのまま殴り書いたか
ようわからん文章やな
847デフォルトの名無しさん
2022/04/30(土) 02:22:55.20ID:Zvv3yApT ぶっちゃけSQLとパワークエリで事足りると思うんですが、会社がPythonメインでやるという方針なのでPython使ってます。pandasもpysparkもデータ分析用というより大量データの結合やデータ変換に使うことが多いです。
環境的には不要で自己満になるかもなのですが、今後のスキルアップのためにオブジェクト指向取り入れて開発したいなぁという願望があります。
環境的には不要で自己満になるかもなのですが、今後のスキルアップのためにオブジェクト指向取り入れて開発したいなぁという願望があります。
848デフォルトの名無しさん
2022/04/30(土) 02:25:25.49ID:MSWmTJKz おまえら素人ばかりだな
オブジェクト指向で作るのは理由があるからだ
理由は自分で考えろ
オブジェクト指向で作るのは理由があるからだ
理由は自分で考えろ
849デフォルトの名無しさん
2022/04/30(土) 02:26:46.14ID:Zvv3yApT >>845
Elixeir初めて聞きました。新しい言語や関数型言語も出てきているのですね。。。
Elixeir初めて聞きました。新しい言語や関数型言語も出てきているのですね。。。
850デフォルトの名無しさん
2022/04/30(土) 02:26:52.93ID:MSWmTJKz pythonメインでやる方針にも理由がある
理由は自分で考えろ
理由は自分で考えろ
851デフォルトの名無しさん
2022/04/30(土) 02:27:36.14ID:MSWmTJKz とにかくやれ
やらない理由はいくらでもあるから
とにかくやる気があるうちにやるんだ
やらない理由はいくらでもあるから
とにかくやる気があるうちにやるんだ
852デフォルトの名無しさん
2022/04/30(土) 02:34:17.07ID:MSWmTJKz やってみて
わからなかったらいつでも質問しておいで
わからなかったらいつでも質問しておいで
853デフォルトの名無しさん
2022/04/30(土) 02:37:35.66ID:Zvv3yApT ありがとうございます
とりあえず挑戦してみます
とりあえず挑戦してみます
854デフォルトの名無しさん
2022/04/30(土) 05:55:28.21ID:OR8SZm5l855デフォルトの名無しさん
2022/04/30(土) 06:14:48.85ID:Zvv3yApT856デフォルトの名無しさん
2022/04/30(土) 08:21:56.93ID:nLS5ACA1 妙だな…Pythonでチーム開発とか普通にあるけど
857デフォルトの名無しさん
2022/04/30(土) 08:29:49.76ID:mj6Qj3Uj858デフォルトの名無しさん
2022/04/30(土) 08:48:06.80ID:UlwKMlAZ YouTubeやDropboxがPythonで書かれてるけど、1人で開発されたなんて考えてんのかね、>>842 は
https://tech-camp.in/note/technology/45702/
DropboxのRian Hunter氏は「PyCon APAC 2013」で、Dropboxは全てPythonで開発していると述べています。コード量はサーバとクライアントのコードを全て合わせて93万7707行。
https://tech-camp.in/note/technology/45702/
DropboxのRian Hunter氏は「PyCon APAC 2013」で、Dropboxは全てPythonで開発していると述べています。コード量はサーバとクライアントのコードを全て合わせて93万7707行。
859デフォルトの名無しさん
2022/04/30(土) 08:55:29.45ID:0pJ/3NeQ 一般的にpythonがーじゃなくて、そいつが職場で開発してるって条件下では大規模開発はありえないって話だろ
860デフォルトの名無しさん
2022/04/30(土) 09:46:12.98ID:2kJdiTOr >>842の気持ちはわかる
たぶんバッチ処理主体でPythonを使ってる現場なんだろうけど、バッチ処理しか書けない奴って本当に一直線のコードしか書けないのよ
最近は業務系のそういう連中がPythonに進出してきていて、なかなか酷い状況だよ
たぶんバッチ処理主体でPythonを使ってる現場なんだろうけど、バッチ処理しか書けない奴って本当に一直線のコードしか書けないのよ
最近は業務系のそういう連中がPythonに進出してきていて、なかなか酷い状況だよ
861デフォルトの名無しさん
2022/04/30(土) 12:04:18.69ID:asMkUOFh 一般常識として身につけておいたほうかがいいとは思うがpandasなんかを使ったデータ分析用途の場合はオブジェクト指向は極力避けて関数とデータを意識的に分けたほうが可読性もメンテナンス性も高いよ
SeriesやDataframeのようにデータとメソッドが不可分な独自の抽象データ構造をライブラリとして提供する場合にはオブジェクト指向を使ったほうがいい
SeriesやDataframeのようにデータとメソッドが不可分な独自の抽象データ構造をライブラリとして提供する場合にはオブジェクト指向を使ったほうがいい
862デフォルトの名無しさん
2022/04/30(土) 14:35:51.64ID:wjVEP1qN Pythonはオブジェクト指向を学ぶのには向いてないよな
863デフォルトの名無しさん
2022/04/30(土) 15:03:49.44ID:Uatckw9k >>860
その通りです
私はバッチ処理専門で開発していますが
関数すら極力書かないようにしています
関数を作ると処理の流れが行ったり来たりして読みづらいからです
Cで言うとmain関数の中に全ての処理があるように書きます
その通りです
私はバッチ処理専門で開発していますが
関数すら極力書かないようにしています
関数を作ると処理の流れが行ったり来たりして読みづらいからです
Cで言うとmain関数の中に全ての処理があるように書きます
864デフォルトの名無しさん
2022/04/30(土) 15:17:02.34ID:XZrd/bpX >>863
関数の役割分担や命名をちゃんとしてないからでは?
関数はそれ自身で責任を追って実装・検証するもの
使う側は関数内部まで気にしなくても済むようにならないと意味ない
なんで便宜上行ったり来たりは発生しない
外部ライブラリやビルトインの関数の実装までふつう追わないでしょ
関数の役割分担や命名をちゃんとしてないからでは?
関数はそれ自身で責任を追って実装・検証するもの
使う側は関数内部まで気にしなくても済むようにならないと意味ない
なんで便宜上行ったり来たりは発生しない
外部ライブラリやビルトインの関数の実装までふつう追わないでしょ
865デフォルトの名無しさん
2022/04/30(土) 16:40:05.60ID:wcqGltd4 >関数すら極力書かないようにしています
さすがにそれはアカン
考えを改めた方がいい
さすがにそれはアカン
考えを改めた方がいい
866デフォルトの名無しさん
2022/04/30(土) 16:45:43.84ID:WuQ7ClRo 個別の関数をmain関数と同居させる場合、
関数の配置の順序とかあるの?
JSで関数を最後にまとめたりしているものがあったけど、
Pythonじゃ見かけないような
関数の配置の順序とかあるの?
JSで関数を最後にまとめたりしているものがあったけど、
Pythonじゃ見かけないような
867デフォルトの名無しさん
2022/04/30(土) 16:56:56.93ID:IElPr3np868デフォルトの名無しさん
2022/04/30(土) 17:15:45.06ID:XOEt5cKu >>866
JSはスコープごとにスクリプトを2回読むイメージで実行されるので
関数や変数の宣言は巻き上げられて先頭で宣言されてるのと同じになる
Pythonにはそういう機能はないので1ファイルならmainの実行は最後にするのが普通
def main():
hoge()
def hoge():
print(‘hoge’)
main()
JSはスコープごとにスクリプトを2回読むイメージで実行されるので
関数や変数の宣言は巻き上げられて先頭で宣言されてるのと同じになる
Pythonにはそういう機能はないので1ファイルならmainの実行は最後にするのが普通
def main():
hoge()
def hoge():
print(‘hoge’)
main()
869デフォルトの名無しさん
2022/04/30(土) 17:16:15.33ID:Uatckw9k >>866
他の言語は知りませんが、Pythonは関数を呼ぶ処理より前に
関数定義がないといけないんですよ
だから関数のあるスクリプトファイルを開くと、まず関数の羅列が
ズラズラと目に入るわけでして、文書を上から下に読んでいくという
人間の自然な動作に合わないのです
他の言語は知りませんが、Pythonは関数を呼ぶ処理より前に
関数定義がないといけないんですよ
だから関数のあるスクリプトファイルを開くと、まず関数の羅列が
ズラズラと目に入るわけでして、文書を上から下に読んでいくという
人間の自然な動作に合わないのです
870デフォルトの名無しさん
2022/04/30(土) 17:39:11.77ID:PWl3mLPj コボラーってやっぱアタオカだな
871デフォルトの名無しさん
2022/04/30(土) 18:04:44.96ID:64v4nlhT872デフォルトの名無しさん
2022/04/30(土) 18:07:46.92ID:OR8SZm5l >>866
Python の def 文は「実行文」だから定義される関数を呼び出す前に実行しないといけないのでJSみたいにするとエラーになる
ちなみに実行文だから
if xxx:
def foo:
print('foo1')
else:
def foo:
print('foo2')
みたいにして実行時に関数の定義を変えることもできる
Python の def 文は「実行文」だから定義される関数を呼び出す前に実行しないといけないのでJSみたいにするとエラーになる
ちなみに実行文だから
if xxx:
def foo:
print('foo1')
else:
def foo:
print('foo2')
みたいにして実行時に関数の定義を変えることもできる
873デフォルトの名無しさん
2022/04/30(土) 18:49:26.07ID:oMuBjy8I 実行文??
874デフォルトの名無しさん
2022/04/30(土) 19:22:27.31ID:XZrd/bpX https://docs.python.org/ja/3/reference/compound_stmts.html#function-definitions
式じゃないし識別子でもない単にそこで実行される文
式じゃないし識別子でもない単にそこで実行される文
875デフォルトの名無しさん
2022/04/30(土) 21:51:14.91ID:yu/EzU82876デフォルトの名無しさん
2022/04/30(土) 22:12:01.94ID:o6QgUZIK >>872
┏━━━━━━━━━━━━┓
┃The image you are .┃
┃requesting does not exist .┃
┃or is no longer available. .┃
┃ ┃
┃imgur.com ┃
┗━━━━━━━━━━━━┛
┏━━━━━━━━━━━━┓
┃The image you are .┃
┃requesting does not exist .┃
┃or is no longer available. .┃
┃ ┃
┃imgur.com ┃
┗━━━━━━━━━━━━┛
877デフォルトの名無しさん
2022/04/30(土) 22:22:35.44ID:64v4nlhT seleniumでaタグをclickしてswitch_to.windows(driver.window_handles[1])しても<html><head></head><body></body></html>っていうページにアクセスするようになる
なんで無内容に?どうすればいいんだろう
そもそもGUI上はクリックしてないんだけどなんだこれ
なんで無内容に?どうすればいいんだろう
そもそもGUI上はクリックしてないんだけどなんだこれ
878デフォルトの名無しさん
2022/04/30(土) 22:23:14.79ID:OR8SZm5l >>875
> インタプリタ型の言語ならJSでもRubyでもPHPでも全く同じことできる
やれるね、だから何?
> 実行文ではないC言語でも定義より先に呼び出したらエラーになる
コンパイル言語で定義より先に呼び出し?
実行順序とソース上の順序を混同してるだろw
> インタプリタ型の言語ならJSでもRubyでもPHPでも全く同じことできる
やれるね、だから何?
> 実行文ではないC言語でも定義より先に呼び出したらエラーになる
コンパイル言語で定義より先に呼び出し?
実行順序とソース上の順序を混同してるだろw
879デフォルトの名無しさん
2022/04/30(土) 22:59:55.25ID:64v4nlhT880デフォルトの名無しさん
2022/04/30(土) 23:11:39.76ID:484odO/R881デフォルトの名無しさん
2022/05/01(日) 02:13:14.49ID:b95w4aAB >>875
C言語の場合、宣言すれば定義は後回しでOK。
C言語の場合、宣言すれば定義は後回しでOK。
882デフォルトの名無しさん
2022/05/01(日) 05:53:28.01ID:Rd1MW222883デフォルトの名無しさん
2022/05/01(日) 08:06:33.67ID:JzdAzqq0884デフォルトの名無しさん
2022/05/01(日) 09:40:22.97ID:0ggTu6P0 実行文って、コンパイル型言語で宣言文と区別する意味の用語だから、Pythonでは、完全にナンセンス
「実行文だから」は何の意味も持たない
実行文でない文は、逆にあるのか?
「実行文だから」は何の意味も持たない
実行文でない文は、逆にあるのか?
885デフォルトの名無しさん
2022/05/01(日) 10:00:01.37ID:aj8iUgGb コンパイル言語?
JSにも宣言文はあるんだが
JSにも宣言文はあるんだが
886デフォルトの名無しさん
2022/05/01(日) 10:06:43.73ID:KjQtFKQ9 インタプリタだって全部の行を一行ずつ実行しながら解釈しているとは限らないんだから区別はあっておかしくない。
887デフォルトの名無しさん
2022/05/01(日) 10:39:20.23ID:c1q3P+1N 宣言っていまいち意味わからんのだけど。
defは今の名前空間に新たにオブジェクト(function/callable)を作成するって捉える方がしっくりする。
だから、名前()で呼び出しするためには、その前に作成が終わってなきゃダメよね、ってなる。
って考えると、Pythonは上から下に順番に実行しかしていない、ってわかる。
defは今の名前空間に新たにオブジェクト(function/callable)を作成するって捉える方がしっくりする。
だから、名前()で呼び出しするためには、その前に作成が終わってなきゃダメよね、ってなる。
って考えると、Pythonは上から下に順番に実行しかしていない、ってわかる。
888デフォルトの名無しさん
2022/05/01(日) 11:07:07.83ID:IDzy7BiL 関数定義をまとめた関数をスクリプト末尾に書いて
それをスクリプト先頭で呼ぶようにすれば…と思ったけどダメですね
ズラズラ並んだ関数定義を見たくない場合、定義部分を別スクリプトにして
それをimportすればいいのかな?
それをスクリプト先頭で呼ぶようにすれば…と思ったけどダメですね
ズラズラ並んだ関数定義を見たくない場合、定義部分を別スクリプトにして
それをimportすればいいのかな?
889デフォルトの名無しさん
2022/05/01(日) 11:28:22.49ID:UqOJOPuh 868のやり方じゃ駄目なんけ?main()の呼び出しを最後に書く以外は関数の並び順は自由だし、関数名がmainなら最初に実行されるだろうことは暗に容易に伝わる。
自分も呼び出すほうを上、呼び出されるほうを下に書くほうが読みやすいと感じるから常にそうしてるよ
自分も呼び出すほうを上、呼び出されるほうを下に書くほうが読みやすいと感じるから常にそうしてるよ
890デフォルトの名無しさん
2022/05/01(日) 11:54:47.68ID:IDzy7BiL891デフォルトの名無しさん
2022/05/01(日) 12:26:54.53ID:Dd8WxxXv >>890
> 868ってmain()より下にあるhoge()をmain()から呼べるってことですよね
> それは何故でしょうか
main()が(定義される時じゃなくて)実行される時はdef hoge()も実行済みだから
> 868ってmain()より下にあるhoge()をmain()から呼べるってことですよね
> それは何故でしょうか
main()が(定義される時じゃなくて)実行される時はdef hoge()も実行済みだから
892デフォルトの名無しさん
2022/05/01(日) 12:29:09.32ID:UqOJOPuh そのこだわりはよくわからんな…
デメリットしか思いつかん
デメリットしか思いつかん
893デフォルトの名無しさん
2022/05/01(日) 12:46:49.10ID:JzdAzqq0 相互参照している場合とかどうするんでしょうね?
894デフォルトの名無しさん
2022/05/01(日) 12:52:31.00ID:Yd4A+jrH895デフォルトの名無しさん
2022/05/01(日) 13:24:18.52ID:Rd1MW222 >>893
実行までに各々定義すればいいだけだからなんの問題もないだろ
実行までに各々定義すればいいだけだからなんの問題もないだろ
896デフォルトの名無しさん
2022/05/01(日) 13:25:01.76ID:Rd1MW222 >>894
Pythonの話とJSの話の区別もつかない無能乙
Pythonの話とJSの話の区別もつかない無能乙
897デフォルトの名無しさん
2022/05/01(日) 13:46:20.12ID:qrKdrkjM どうでもいい話になってきてるような
スレタイにふさわしいと言えばそうだが
スレタイにふさわしいと言えばそうだが
898デフォルトの名無しさん
2022/05/01(日) 14:07:59.04ID:b95w4aAB スレタイ通り下らない話で盛り上がってて実に素晴らしい。
899デフォルトの名無しさん
2022/05/01(日) 14:08:54.21ID:QvrU5Mi0 エントリポイントのエの字も出ない
900デフォルトの名無しさん
2022/05/01(日) 14:18:30.82ID:Gwm1B3AE >>891
実行というからおかしくなる
関数のシグニチャを評価するタイミングと
関数のボディを評価するタイミングの違い
前者が他言語でいう宣言文の役割
Cのプロトタイプ宣言とかと同じ
Pythonでも宣言として捉えたほうが分かりやすいよ
実行というからおかしくなる
関数のシグニチャを評価するタイミングと
関数のボディを評価するタイミングの違い
前者が他言語でいう宣言文の役割
Cのプロトタイプ宣言とかと同じ
Pythonでも宣言として捉えたほうが分かりやすいよ
901デフォルトの名無しさん
2022/05/01(日) 14:20:32.48ID:IDzy7BiL902デフォルトの名無しさん
2022/05/01(日) 14:40:33.88ID:vJsN8meg903デフォルトの名無しさん
2022/05/01(日) 14:53:14.40ID:KjQtFKQ9 うちはスクリプトの末尾にこの2行、ってのが定番たわ。
if __name__ == '__main__':
main()
if __name__ == '__main__':
main()
904デフォルトの名無しさん
2022/05/01(日) 15:06:46.08ID:JzdAzqq0905デフォルトの名無しさん
2022/05/01(日) 15:10:06.70ID:Rd1MW222 >>900
だからそんな思考回路だと
if xxx:
def foo:
print('foo1')
else:
def foo:
print('foo2')
みたいなコード見たらなんで宣言2個あってもいいんだよ?ってなるだろ
だからそんな思考回路だと
if xxx:
def foo:
print('foo1')
else:
def foo:
print('foo2')
みたいなコード見たらなんで宣言2個あってもいいんだよ?ってなるだろ
906デフォルトの名無しさん
2022/05/01(日) 15:11:46.01ID:IDzy7BiL907デフォルトの名無しさん
2022/05/01(日) 15:15:47.63ID:4M5GqABF def main(): hoge()
def hoge(): print(‘hoge’)
main()
Pythonの評価順は基本的に上から下に一行ずつ
1行目ではdef main():までの関数シグニチャのみ評価してボディは評価されない(それがdefの役目)
2行目も同じようにdef hoge():までの関数シグニチャのみ評価
3行目の関数呼び出し時にmain関数のボディが評価される
そのタイミングではhoge関数はシグニチャが評価され関数として宣言済みなのでhogeを呼び出せる
def hoge(): print(‘hoge’)
main()
Pythonの評価順は基本的に上から下に一行ずつ
1行目ではdef main():までの関数シグニチャのみ評価してボディは評価されない(それがdefの役目)
2行目も同じようにdef hoge():までの関数シグニチャのみ評価
3行目の関数呼び出し時にmain関数のボディが評価される
そのタイミングではhoge関数はシグニチャが評価され関数として宣言済みなのでhogeを呼び出せる
908デフォルトの名無しさん
2022/05/01(日) 15:20:45.71ID:Rd1MW222 >>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のようになる
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のようになる
909デフォルトの名無しさん
2022/05/01(日) 15:22:24.87ID:Rd1MW222 >>906
そう思うのは自由だけどPythonでは無理だから諦めるか他の言語にするしかない
そう思うのは自由だけどPythonでは無理だから諦めるか他の言語にするしかない
910デフォルトの名無しさん
2022/05/01(日) 15:22:30.22ID:F/hLZDCn911デフォルトの名無しさん
2022/05/01(日) 15:30:33.22ID:vJsN8meg >>906
確かにそのとおりだけど、あんまり他人を疑いすぎると禿げちゃうよ
確かにそのとおりだけど、あんまり他人を疑いすぎると禿げちゃうよ
レス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★6 [樽悶★]
- 小野田紀美 経済安保相「悪いことをする外国人、日本にいない状況つくる」 [Hitzeschleier★]
- 【🐼🇨🇳】「高市総理VS中国」で日本からパンダはゼロに? 上野動物園「パンダ返還期限」まであと4カ月…★2 [BFU★]
- 【速報】 米大使声明 「日本を支えていく」「中国が威圧的手段に訴えるのは断ち難い悪癖」 [お断り★]
- 【千葉市】ロッテ本拠地マリン ドーム型再検討 市の試算ではドーム化で400億円以上の追加投資が生じる可能性 [尺アジ★]
- 「“なり得る”って言っただけだから…」高市早苗“存立危機”答弁後に漏らした本音 ★4 [Hitzeschleier★]
- 【実況】博衣こよりのえちえち声遊楽プロジェクト 共同研究第三弾🧪
- 【悲報】立憲岡田「間違った答弁をした高市総理に問題がある」→愛国者ブチギレ炎上 [834922174]
- 【速報】アメリカ「高市総理を支持する。中国の威圧は許せない」 [931948549]
- 珍🏡珍
- 小野田紀美大臣「悪いことをする外国人は日本にいない状況をつくる」 [856698234]
- 外国人「日本の立ちんぼガールやばすぎるwwwwwwwww [977790669]
