↑スレ立てる毎に減るので、減ってたら3つに補充すること。
・当スレにRubyのソースコード類を書くことを禁ず
・Ruby等、Pythonではないプログラミング言語での回答類・質問を書くのも禁止
・「Ruby では」「Rubyでは」「Rails」正規表現→「^クソチョンw$」をNGワード登録推奨
・エラーを解決したいときは、かならず
エラー文(勝手に省略orスクショうp等の横着禁止)と
おま環(Pythonのバージョン番号+OS名とバージョン+IDE名)を書け。
★Pythonのソースコードを5ちゃんに直貼はインデントが崩壊するので、
↓等のコードうp用サイトに貼ってきてくだしあ。(スクリーンショットをうpる「横着」禁止)
ttps://techiedelight.com/compiler/ Run Code機能あり。
ttp://ideone.com/ デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。
ttp://pastebin.com/ まずまずシンプル。
ttp://dpaste.com/ とてもシンプル。消えるまでの日数は十分長ーく指定のこと。
◇Pythonオフィシャルサイト http://www.python.org/
◇Pythonドキュメント https://docs.python.org/ja/3/
◇まとめwiki ttp://python.rdy.jp/
※前スレ
Pythonのお勉強 Part70
https://mevius.5ch.net/test/read.cgi/tech/1677856680/
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
Pythonのお勉強 Part71
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ cffb-p/wP)
2023/09/20(水) 09:13:41.41ID:u6xixiUt0307デフォルトの名無しさん (ワッチョイ e964-wavJ)
2023/10/11(水) 21:05:21.93ID:5UtQ/lO50 そもそも可変長で追加したいと思ったことないや
1個追加するappendでforループ回したほうがバグりづらくない?
どうしても用意したいならappend, extend,で list の操作と名前を揃えるとか?
1個追加するappendでforループ回したほうがバグりづらくない?
どうしても用意したいならappend, extend,で list の操作と名前を揃えるとか?
308デフォルトの名無しさん (ワッチョイ e964-wavJ)
2023/10/11(水) 21:11:21.59ID:5UtQ/lO50 Pythonって配列の形状の指定がないことが多いから、長さ不明なスターアンパック自体やっぱ危険じゃね?と思う
それで書くのが明らかに簡潔なケースでは当然使うけど、そういうのも最終的にはリストかnumpy配列の委譲で実装しちゃうからメソッドの名付けで困ったことはないかも
委譲先のをパクる
それで書くのが明らかに簡潔なケースでは当然使うけど、そういうのも最終的にはリストかnumpy配列の委譲で実装しちゃうからメソッドの名付けで困ったことはないかも
委譲先のをパクる
309デフォルトの名無しさん (ワッチョイ 460f-1NJl)
2023/10/11(水) 21:48:59.91ID:dwLcTMya0 スターアンパックで危険って例えば・・?
310デフォルトの名無しさん (ワッチョイ 6eda-wjRd)
2023/10/11(水) 22:06:40.32ID:dWNDikg30 numpyとかはコレクション自体が本体みたいなもんだからリスト渡すのはわかる
しかしリストの各値を個別で扱いたい場合、各値を扱う目的とは別に
その値を格納したリストそのものに別の目的が生まれてしまう
その次元を下げてくれるのがスターの目的だと思う
しかしリストの各値を個別で扱いたい場合、各値を扱う目的とは別に
その値を格納したリストそのものに別の目的が生まれてしまう
その次元を下げてくれるのがスターの目的だと思う
311デフォルトの名無しさん (ワッチョイ 91ed-glRR)
2023/10/11(水) 22:14:51.53ID:lnf3XQiK0 >そもそも可変長で追加したいと思ったことない
それは普通にそれでいいんじゃね
可変長使わずにadd_users追加しましたってときに
「usersなんだから”当然”リスト渡すよねー(渡すのはリスト型だよねー)」(もっと言えばuserのみが格納されたリスト型だよねー、またはusersオブジェクトとかでもいい)
みたいなアノテーションが必然的に発生するのがモヤモヤするだけで。
それは普通にそれでいいんじゃね
可変長使わずにadd_users追加しましたってときに
「usersなんだから”当然”リスト渡すよねー(渡すのはリスト型だよねー)」(もっと言えばuserのみが格納されたリスト型だよねー、またはusersオブジェクトとかでもいい)
みたいなアノテーションが必然的に発生するのがモヤモヤするだけで。
312デフォルトの名無しさん (ワッチョイ 2601-AeST)
2023/10/11(水) 22:51:38.36ID:Z7/f/t+S0 >>306
そのケースは基本的に可変長引数を使う状況ではない
1件追加するためのAPIと複数一括で追加するためのAPIは分けるべき
複数一括で追加するメソッドの中身が1件1件追加するのと同じ処理なら
後者のAPIは用意せず利用者側がループを回すのでも十分
一括処理の最適化がされてるなら複数形にするだけでなく
複数件一括処理であることを示す命名を状況に合わせて考えればいいと思う
そのケースは基本的に可変長引数を使う状況ではない
1件追加するためのAPIと複数一括で追加するためのAPIは分けるべき
複数一括で追加するメソッドの中身が1件1件追加するのと同じ処理なら
後者のAPIは用意せず利用者側がループを回すのでも十分
一括処理の最適化がされてるなら複数形にするだけでなく
複数件一括処理であることを示す命名を状況に合わせて考えればいいと思う
313デフォルトの名無しさん (ワッチョイ 0594-cpkJ)
2023/10/11(水) 22:56:16.70ID:rx/2vzyO0 >そのケースは
どのケースのことを言ってるのかまったくわからんが
使わないなら使わなくていいって言ってるがな
どのケースのことを言ってるのかまったくわからんが
使わないなら使わなくていいって言ってるがな
314デフォルトの名無しさん (ワッチョイ 2601-AeST)
2023/10/11(水) 22:58:21.14ID:Z7/f/t+S0 >>304
各オブジェクトのreprを利用する場合もあればしない場合もある
そういうのを含めてどういう文字列表現にするかをpprintが決めてるということ
pprint自体はpythonで書かれててそんなに難しくないからソース見てみればいいよ
https://github.com/python/cpython/blob/3.12/Lib/pprint.py
各オブジェクトのreprを利用する場合もあればしない場合もある
そういうのを含めてどういう文字列表現にするかをpprintが決めてるということ
pprint自体はpythonで書かれててそんなに難しくないからソース見てみればいいよ
https://github.com/python/cpython/blob/3.12/Lib/pprint.py
315デフォルトの名無しさん (アウアウウー Sa39-OOOs)
2023/10/12(木) 10:46:44.12ID:u59ybXeVa >>301
呼ぶ側でパラメータが複数のときと1個であることが判ってるときに
fuga = [a, b, c]
hoge(*fuga)
と
hage = [p]
hoge(*hage)
の様に無理やりくっつけるのはダサくないのか?
hoge(p)
で良いだろ?
呼ぶ側でパラメータが複数のときと1個であることが判ってるときに
fuga = [a, b, c]
hoge(*fuga)
と
hage = [p]
hoge(*hage)
の様に無理やりくっつけるのはダサくないのか?
hoge(p)
で良いだろ?
316デフォルトの名無しさん (ワッチョイ 0154-Y2ua)
2023/10/12(木) 11:11:35.88ID:QP/ncIDa0 不合理なこと、手間がかかること、読みにくいことを避ける
合理的で簡潔で読みやすければ、ダサくてもそれが正解
合理的で簡潔で読みやすければ、ダサくてもそれが正解
317デフォルトの名無しさん (ワッチョイ 859e-iLfk)
2023/10/12(木) 11:47:55.21ID:ff5KX8HX0 みんなが何の話をしてるのかわからん
ある特定のケースで関数が引数に可変長引数かリストのどっちを受け取るべきかっていう話?
それとも、そもそも可変引数は引数は必要かっていう話?
今の議論に** オペレータは含まれる?
ある特定のケースで関数が引数に可変長引数かリストのどっちを受け取るべきかっていう話?
それとも、そもそも可変引数は引数は必要かっていう話?
今の議論に** オペレータは含まれる?
318デフォルトの名無しさん (ワッチョイ 859e-iLfk)
2023/10/12(木) 11:49:19.75ID:ff5KX8HX0319デフォルトの名無しさん (ワッチョイ 859e-iLfk)
2023/10/12(木) 11:49:27.64ID:ff5KX8HX0320デフォルトの名無しさん (ワッチョイ 8d2a-dsh4)
2023/10/12(木) 13:25:38.85ID:B82UzHiK0 PythonでStableDiffusionで使われるsafetensorsをonnxファイルに変換するアプリを作り、ユーザーに配布したいのですが、ユーザーにPython環境を構築させないで済む方法があれば教えてください
GUIから使用したいのでPythonでコマンドラインアプリを作成しC#で作ったGUIからC#のProsses.Start()で起動して動かしたいと思いますが
例えばPythonをインストールしていないPCでProsses.Start("〇〇.py")をやっても動きませんよね?
どうすればいいでしょうか?
GUIから使用したいのでPythonでコマンドラインアプリを作成しC#で作ったGUIからC#のProsses.Start()で起動して動かしたいと思いますが
例えばPythonをインストールしていないPCでProsses.Start("〇〇.py")をやっても動きませんよね?
どうすればいいでしょうか?
321デフォルトの名無しさん (ワッチョイ d56a-S03z)
2023/10/12(木) 13:35:59.07ID:XSGwFcLX0 >>315
>複数のときと1個であることが判ってるとき
うん、だからadd_itemで可変長使いたくないなら使わなくていいしadd_itemsで可変長使えばいいし
別に可変長使ったadd_itemでitem複数追加できる仕様にしてもいいしって言ってる
add_itemであろうがadd_itemsであろうが
リスト渡す場合に「当然リスト形式で渡すよね」というアノテーション発生が問題なのであって、と言っている
リストに限らず、リスト渡すなら渡すで、オブジェクト渡すなら渡すで、
どうしてその形式なの?の前提があるでしょ
>複数のときと1個であることが判ってるとき
うん、だからadd_itemで可変長使いたくないなら使わなくていいしadd_itemsで可変長使えばいいし
別に可変長使ったadd_itemでitem複数追加できる仕様にしてもいいしって言ってる
add_itemであろうがadd_itemsであろうが
リスト渡す場合に「当然リスト形式で渡すよね」というアノテーション発生が問題なのであって、と言っている
リストに限らず、リスト渡すなら渡すで、オブジェクト渡すなら渡すで、
どうしてその形式なの?の前提があるでしょ
322デフォルトの名無しさん (ワッチョイ 6eb9-atGC)
2023/10/12(木) 13:41:54.06ID:vYXKnMxn0 >>303,309
が知りたい
が知りたい
323デフォルトの名無しさん (ワッチョイ b17c-/Lnu)
2023/10/12(木) 14:32:29.65ID:WrmmhFIY0 あえて複数形のない日本語で考えるとわかりやすいかもな
add_うどん()
add_うどん(うどん)
うどんが何うどんだとかどこ産のうどんだとかは、add_うどんメソッドには依存しない
とにかく、うどんを渡せばよくて
そのうどんが、うどんクラスのインスタンスだったりするかもしれないってだけ
だが、リストで渡せてしてしまうと
add_うどん([うどん、うどん、うどん、、])
[]←これなに? → うどん(など)の配膳カートです
これはうどんじゃなくてカートを渡したってことになる
「カートには入れたが、複数杯(や玉)のうどんを渡したって意味な」
というのが自分も含め通じてしまうのは
Listはそうときに使う(使いたい)からっていう共通認識だけでしかない
"add_うどん_を_配膳カート_で_()"
とかだったら配膳カートをクラス化して渡せばいいし
(リストの機能で十分なら)クラス化せずともリストで渡してもいいのはわかる
でも大抵、リストを渡す時はそこらへん省略されてるかアノテーションで判断してる気がする
なぜならadd_うどん内部での配膳カートはイテラブル程度の機能しか使わないことが多いから
リストを渡す、は本当はそれ自体に意図があり
可変長引数はその意図を論理的に省略することができる
add_うどん()
add_うどん(うどん)
うどんが何うどんだとかどこ産のうどんだとかは、add_うどんメソッドには依存しない
とにかく、うどんを渡せばよくて
そのうどんが、うどんクラスのインスタンスだったりするかもしれないってだけ
だが、リストで渡せてしてしまうと
add_うどん([うどん、うどん、うどん、、])
[]←これなに? → うどん(など)の配膳カートです
これはうどんじゃなくてカートを渡したってことになる
「カートには入れたが、複数杯(や玉)のうどんを渡したって意味な」
というのが自分も含め通じてしまうのは
Listはそうときに使う(使いたい)からっていう共通認識だけでしかない
"add_うどん_を_配膳カート_で_()"
とかだったら配膳カートをクラス化して渡せばいいし
(リストの機能で十分なら)クラス化せずともリストで渡してもいいのはわかる
でも大抵、リストを渡す時はそこらへん省略されてるかアノテーションで判断してる気がする
なぜならadd_うどん内部での配膳カートはイテラブル程度の機能しか使わないことが多いから
リストを渡す、は本当はそれ自体に意図があり
可変長引数はその意図を論理的に省略することができる
324デフォルトの名無しさん (ワッチョイ 0548-3JHV)
2023/10/12(木) 15:36:59.50ID:gAp1qlED0 なんか知らんが草
325デフォルトの名無しさん (アウアウクー MM35-wavJ)
2023/10/12(木) 15:40:56.90ID:B5sD+hFhM >>309
危険というか単にバグりやすくなるってだけ
多重配列が危ない
リストのリスト、リストのリストのリストとかでアンパック使うと少なくとも俺はすぐバグる
あんまり入れ子になるなら普通は自作クラス定義するがリストとタプルで済ませたいこともあるから
自作データクラスのリストとかは多重配列に近いと思うのでアンパックをホイホイ使うとバグりやすいんじゃないかなと
危険というか単にバグりやすくなるってだけ
多重配列が危ない
リストのリスト、リストのリストのリストとかでアンパック使うと少なくとも俺はすぐバグる
あんまり入れ子になるなら普通は自作クラス定義するがリストとタプルで済ませたいこともあるから
自作データクラスのリストとかは多重配列に近いと思うのでアンパックをホイホイ使うとバグりやすいんじゃないかなと
326デフォルトの名無しさん (アウアウクー MM35-wavJ)
2023/10/12(木) 15:47:06.45ID:B5sD+hFhM アンパック使ってもforで書いてもほとんど同じだけど多重配列ならforの入れ子で書いたほうが階層の把握に間違いがないってことね
1重配列なことが確実ならスターアンパックで問題ないと思う
1重配列なことが確実ならスターアンパックで問題ないと思う
327デフォルトの名無しさん (ワッチョイ 0154-Y2ua)
2023/10/12(木) 16:07:06.78ID:QP/ncIDa0 組み込みの型を使ったらそうなるって
listにはlistという意味しか無いんだから
型に意味を持たせたいならクラスを作るしか
listにはlistという意味しか無いんだから
型に意味を持たせたいならクラスを作るしか
328デフォルトの名無しさん (ワッチョイ 85cf-d6sz)
2023/10/12(木) 16:22:18.67ID:a6KaL/fa0 >バグりやすくなる >少なくとも俺はすぐバグる
なにこれ
めっちゃふわふわしてて全然わからん
具体的にどういうとき・・?
なにこれ
めっちゃふわふわしてて全然わからん
具体的にどういうとき・・?
329デフォルトの名無しさん (ワッチョイ 69e4-NDEe)
2023/10/12(木) 16:27:05.61ID:kcOw/s7X0330328 (ワッチョイ 0d01-5AJl)
2023/10/12(木) 16:39:38.79ID:qIe0UAcP0 一応自分でも考えてみたが多次元配列をスターで再帰するときとか?
def recursive_array_print(*args):
for item in args:
if isinstance(item, list):
recursive_array_print(*item)
else:
print(item)
nested_array = [1, [2, [3, 4], 5], 6, [7, 8]]
recursive_array_print(nested_array)
例えばこれは数値だけだからまだいいけど
辞書やらだった場合に条件分岐が面倒とか・・?
でもそれバグというより設計ミスだしな
バグってなんだろ
def recursive_array_print(*args):
for item in args:
if isinstance(item, list):
recursive_array_print(*item)
else:
print(item)
nested_array = [1, [2, [3, 4], 5], 6, [7, 8]]
recursive_array_print(nested_array)
例えばこれは数値だけだからまだいいけど
辞書やらだった場合に条件分岐が面倒とか・・?
でもそれバグというより設計ミスだしな
バグってなんだろ
331デフォルトの名無しさん (ワッチョイ 05b1-h3B4)
2023/10/12(木) 18:00:33.28ID:D2IWbE4K0 個人的に第一引数設計の優先順位は
①単数
②単数・複数(可変長引数)= ③単数・複数(関数名に引数の意図を明示&リスト)
④単数・複数(単純展開が目的のリスト)
①はよく見る(というか複数しなければほぼ必須なので当たり前)
②は①で実装できる範囲なのであまり見ない(例 [ list.append(i) for ])
③をするくらいなら渡す値をクラス化していることが多い
④は①で実装できる範囲なのであまり見ない、個人用途コードでよく見る
第一引数でなくとも(行列の演算でもない限り)リストを渡すのは微妙
①単数
②単数・複数(可変長引数)= ③単数・複数(関数名に引数の意図を明示&リスト)
④単数・複数(単純展開が目的のリスト)
①はよく見る(というか複数しなければほぼ必須なので当たり前)
②は①で実装できる範囲なのであまり見ない(例 [ list.append(i) for ])
③をするくらいなら渡す値をクラス化していることが多い
④は①で実装できる範囲なのであまり見ない、個人用途コードでよく見る
第一引数でなくとも(行列の演算でもない限り)リストを渡すのは微妙
332317 (ワッチョイ e943-nnu1)
2023/10/13(金) 10:32:08.61ID:uOHCnao90 誰か教えて下さい、、
333デフォルトの名無しさん (ワッチョイ 46f4-SXiR)
2023/10/13(金) 10:36:29.66ID:b6IM7MTY0 >>331
>②単数・複数(可変長引数)
可変長引数は単数・複数を同時にサポートするためにあるんじゃないんだよ
そもそもの大前提として一つの関数や一つの変数で単数・複数を同時にサポートしようとするのは特殊なケースを除いて基本的に悪手だからね
>②単数・複数(可変長引数)
可変長引数は単数・複数を同時にサポートするためにあるんじゃないんだよ
そもそもの大前提として一つの関数や一つの変数で単数・複数を同時にサポートしようとするのは特殊なケースを除いて基本的に悪手だからね
334デフォルトの名無しさん (ワッチョイ 7610-n4m4)
2023/10/13(金) 10:40:10.61ID:AODTp1VX0 >同時にサポートするためにあるんじゃない
printさん・・
printさん・・
335デフォルトの名無しさん (ワッチョイ 7a36-580C)
2023/10/13(金) 10:44:37.94ID:YTjLrT3n0 ん・・ちょっとまてよだったら可変長引数使う時は
hoge() ←ダメ
hoge(a) ←ダメ
↑は条件分岐でそもそも実行させないようにして
少なくとも
hoge(a,b)
ここから推奨ってこと?
可変長ってそんな概念だったっけ・・?
hoge() ←ダメ
hoge(a) ←ダメ
↑は条件分岐でそもそも実行させないようにして
少なくとも
hoge(a,b)
ここから推奨ってこと?
可変長ってそんな概念だったっけ・・?
336デフォルトの名無しさん (ワッチョイ da93-3Xrj)
2023/10/13(金) 10:48:38.24ID:zcTNSeqM0337デフォルトの名無しさん (ワッチョイ ae68-zwJs)
2023/10/13(金) 11:33:13.84ID:9tKKj3QG0 pythonの設計思想は知らんけど
>かへん‐ちょう〔‐チヤウ〕【可変長】 長さ・桁数・文字数・データの大きさなどが定まっていないこと。
言葉の意味からして
>同時にサポートするためにあるんじゃない
はさすがに違和感あるわ
>かへん‐ちょう〔‐チヤウ〕【可変長】 長さ・桁数・文字数・データの大きさなどが定まっていないこと。
言葉の意味からして
>同時にサポートするためにあるんじゃない
はさすがに違和感あるわ
338デフォルトの名無しさん (ワッチョイ 0154-Y2ua)
2023/10/13(金) 11:46:57.67ID:CVigb7Ut0 > 長さ・桁数・文字数・データの大きさ
のどれでもなく、パラメータの個数だよな
のどれでもなく、パラメータの個数だよな
339デフォルトの名無しさん (ワッチョイ 01bc-bwTL)
2023/10/13(金) 12:01:59.94ID:Ovg0M26I0 などが
340デフォルトの名無しさん (ワッチョイ 0154-Y2ua)
2023/10/13(金) 12:21:03.84ID:CVigb7Ut0 lengthが数を表すという文化が歪んでるんだよな
なんでlenじゃなくてsizeにしなかったんだろう
なんでlenじゃなくてsizeにしなかったんだろう
341デフォルトの名無しさん (ワッチョイ 8d2a-pUf+)
2023/10/13(金) 13:11:04.18ID:C21zpC1k0 自分の誤読をごまかすために文化に難癖つけ始めた
342デフォルトの名無しさん (ワッチョイ 5aad-VZIV)
2023/10/13(金) 14:03:08.40ID:6NvcCRtg0343デフォルトの名無しさん (ワッチョイ 0a5f-SXiR)
2023/10/13(金) 15:48:46.04ID:CCLNG/R30 単数・複数の定義からはじめないといけないのか
先の例を借りるなら
def add_user(user: User)が単数
def add_users(users: list[User])が複数
この2つを一つの関数でサポートしようとして
def add_user(*users: User)のようにするのが間違った可変長引数の使い方
先の例を借りるなら
def add_user(user: User)が単数
def add_users(users: list[User])が複数
この2つを一つの関数でサポートしようとして
def add_user(*users: User)のようにするのが間違った可変長引数の使い方
344デフォルトの名無しさん (ワッチョイ 5a47-f11/)
2023/10/13(金) 16:27:41.27ID:o2+w7ksq0345デフォルトの名無しさん (ワッチョイ 0154-Y2ua)
2023/10/13(金) 16:50:17.50ID:CVigb7Ut0 根拠がダサいだしな
ダサいかどうかを基準とする考え方はダサい
ダサいかどうかを基準とする考え方はダサい
346デフォルトの名無しさん (ワッチョイ da02-4yUX)
2023/10/13(金) 17:31:26.11ID:TNjzrdTI0 すべて羅列するなら(名前付き引数や**kwargsは除外)
単数
①def add_user(user: User) #一般的
②def add_user(user: List[User]) #関数名からListである必要性を連想できない
③def add_user(*user: User) #あるっちゃある例print
④def add_user(*user: List[User]) #②同様
複数
①def add_users(user: Users) #UsersのUser取り出しロジックがUsersのデータ型に依存、関数名での補足がいると思う
②def add_users(user: List[User]) #よくみる、①の発展、だがList展開ロジックが必須で暗黙的
③def add_users(*user: User) #=単数③、より明示的
④def add_users(*user: List[User]) #=単数④
単数④複数④は無い、関数名次第ではアリ
あくまでadd_user,add_users名でやるなら
単数①、単数③、複数③、複数②だな
本質は複数①②が同列に扱われている、という部分だと思う
単数
①def add_user(user: User) #一般的
②def add_user(user: List[User]) #関数名からListである必要性を連想できない
③def add_user(*user: User) #あるっちゃある例print
④def add_user(*user: List[User]) #②同様
複数
①def add_users(user: Users) #UsersのUser取り出しロジックがUsersのデータ型に依存、関数名での補足がいると思う
②def add_users(user: List[User]) #よくみる、①の発展、だがList展開ロジックが必須で暗黙的
③def add_users(*user: User) #=単数③、より明示的
④def add_users(*user: List[User]) #=単数④
単数④複数④は無い、関数名次第ではアリ
あくまでadd_user,add_users名でやるなら
単数①、単数③、複数③、複数②だな
本質は複数①②が同列に扱われている、という部分だと思う
347デフォルトの名無しさん (ワッチョイ 8d2a-dsh4)
2023/10/13(金) 18:25:27.74ID:/53+FR130 最近Python始めたんだがGitHubで公開されてるStableDiffusionのsafetensorsファイルをOnnxファイルに変換するスクリプトをクローンして使って見たんだ
その中でハギングフェイスのライブラリ使ってんだがそのライブラリに変更があったみたいでスクリプトがまともに動かなくなってた
Pythonってこういうことよくあるの?
その中でハギングフェイスのライブラリ使ってんだがそのライブラリに変更があったみたいでスクリプトがまともに動かなくなってた
Pythonってこういうことよくあるの?
348デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
2023/10/13(金) 18:29:10.51ID:sP+zp0cDa >>344
ごめん、そもそもadd_users(*users)と書く設計にしても全然動くわけで
どう書くと「書く側の人間が」「バグらせやすい」という話を一貫してしてると思ってたのでまさかそこが理解できないとは思わなかった
「バグりやすい」より「バグらせやすい」と書いたほうが親切だったね、どちらでも意味が通るけど
ごめん、そもそもadd_users(*users)と書く設計にしても全然動くわけで
どう書くと「書く側の人間が」「バグらせやすい」という話を一貫してしてると思ってたのでまさかそこが理解できないとは思わなかった
「バグりやすい」より「バグらせやすい」と書いたほうが親切だったね、どちらでも意味が通るけど
349デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
2023/10/13(金) 18:36:26.11ID:sP+zp0cDa >>330
来る配列の深さもshapeもわからないなら再帰で書くしかないからそれはスターアンパックで書いて構わないと思うよ
2重配列とか3重配列とか、numpyで言えばndimとかshapeの一部が決まってる多重配列を扱う場合にスターアンパック使うのはよくないと思う
こういうのは俺が勝手に言ってるだけでもなくて例えばEffective Pythonには4つ以上の要素を含む(1次元)配列をスターアンパックするなと書いてある
2重、3重、4重とかの組み込み型の多重配列は普通にコード書いて出てくるがそれらをほいほいスターアンパックすればよりバグを生みやすいと思う
add_users(*users)は俺にはアンチパターンに見える
来る配列の深さもshapeもわからないなら再帰で書くしかないからそれはスターアンパックで書いて構わないと思うよ
2重配列とか3重配列とか、numpyで言えばndimとかshapeの一部が決まってる多重配列を扱う場合にスターアンパック使うのはよくないと思う
こういうのは俺が勝手に言ってるだけでもなくて例えばEffective Pythonには4つ以上の要素を含む(1次元)配列をスターアンパックするなと書いてある
2重、3重、4重とかの組み込み型の多重配列は普通にコード書いて出てくるがそれらをほいほいスターアンパックすればよりバグを生みやすいと思う
add_users(*users)は俺にはアンチパターンに見える
350デフォルトの名無しさん (ワッチョイ dafa-h7+a)
2023/10/13(金) 19:36:16.66ID:v7U/yjft0 >add_users(*users)は俺には
嫌ならそう書かなければいいだけでは・・?
多重配列の生成とその扱いを混同してるんだと思うが
usersがUserクラスを持つならそれに従えばいいと思うぞ
例えば4つ以上といわず[np,np,np,,,,,]扱う、みたいなケースがあるのかはしらんが
無理にスターアンパックする必要ないわけで
>>308>書くのが明らかに簡潔なケースでは当然使うけど
と同じように逆然りでしょ
嫌ならそう書かなければいいだけでは・・?
多重配列の生成とその扱いを混同してるんだと思うが
usersがUserクラスを持つならそれに従えばいいと思うぞ
例えば4つ以上といわず[np,np,np,,,,,]扱う、みたいなケースがあるのかはしらんが
無理にスターアンパックする必要ないわけで
>>308>書くのが明らかに簡潔なケースでは当然使うけど
と同じように逆然りでしょ
351デフォルトの名無しさん (ワッチョイ 9501-XMkt)
2023/10/13(金) 19:38:42.67ID:gtyKnuUL0 print関数という実績
352デフォルトの名無しさん (ワッチョイ b10c-bncC)
2023/10/13(金) 19:57:29.33ID:rRALxWOX0 add_users(user1,user2)と書いてもadd_users(*users)と書いても動いちゃう
だから(書く側の人間が)バグらせやすいんだ
そんなことある・・?
False==0で動いちゃった、よりよっぽどましだと思うが。。
だって少なくともエディタの補助範囲内だし
だから(書く側の人間が)バグらせやすいんだ
そんなことある・・?
False==0で動いちゃった、よりよっぽどましだと思うが。。
だって少なくともエディタの補助範囲内だし
353デフォルトの名無しさん (ワッチョイ da3e-vdcw)
2023/10/13(金) 20:09:45.61ID:hDXnu7+A0 自分の取り扱ってるデータが何なのか理解せずに関数に渡すことがまずありえないしな
354デフォルトの名無しさん (ワッチョイ 5a79-GYY9)
2023/10/13(金) 20:24:35.57ID:ZA5Rx9q50 ・1つしか渡す機会がない
・リストしか渡す機会がない
・管理別々の2つ以上の変数を渡したい時がある
・処理速度が気になる場所
などなど
臨機応変に使い分けちゃえば?
・リストしか渡す機会がない
・管理別々の2つ以上の変数を渡したい時がある
・処理速度が気になる場所
などなど
臨機応変に使い分けちゃえば?
355デフォルトの名無しさん (ワッチョイ 76d6-n+VP)
2023/10/13(金) 20:46:44.55ID:K56rmpTB0 あんまり興味ないけど一言
print関数はプログラマにとっての使いやすさに特化してるから可変長引数でいいけど
普通の関数には使わないほうがいい
iterableを受け取る設計がいいことが多い
print関数はプログラマにとっての使いやすさに特化してるから可変長引数でいいけど
普通の関数には使わないほうがいい
iterableを受け取る設計がいいことが多い
356デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
2023/10/13(金) 20:47:33.98ID:e5Ke0Kb/a357デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
2023/10/13(金) 20:50:53.31ID:e5Ke0Kb/a 端的に言うと、プログラミングが苦手な人が書くコード
358デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
2023/10/13(金) 20:58:43.17ID:e5Ke0Kb/a そもそも自分一人しか見なくて完全にロジックを把握できてるコードなら縛り無く好きに書けばいいんだよ
ここでどう書くのがキレイか?とか聞く時点でバグらせづらさとか、プロジェクトとして複数人で共有した場合の能率の話とかしてると考えるのが当たり前だよね
なのにアンチパターンとかバグりやすいとか言われると怒る心理がよくわからんよ
add_user(*users)は書いたら恥ずかしいコードだよ
ここでどう書くのがキレイか?とか聞く時点でバグらせづらさとか、プロジェクトとして複数人で共有した場合の能率の話とかしてると考えるのが当たり前だよね
なのにアンチパターンとかバグりやすいとか言われると怒る心理がよくわからんよ
add_user(*users)は書いたら恥ずかしいコードだよ
359デフォルトの名無しさん (ワッチョイ daad-GqR6)
2023/10/13(金) 21:03:29.43ID:LOKUwuMW0 臨機応変な有志たちは、>>346単数①に収束してる >>354
・リストしか渡す機会がない
は個人的には例えば、土や木や葉っぱデータの詰まった森データを渡すことを想定していて
森をリスト型で渡すことは稀
土とかを原子レベルで分解すればリストでいいと思う
同じように、1枚の落ち葉の詰まった落ち葉群をリストで渡す、というのは稀な印象
普通は落ち葉群クラスの落ち葉群インスタンスで渡すと思う
ただ、何の木の種類の落ち葉なのか、重さや枯れ具合など
落ち葉オブジェクトにするまでもない場合
リストに入れて渡す、という選択をする場合はあるが
有志たちはそれはあまりやっていない印象
自分が知らないだけかもしれない
・リストしか渡す機会がない
は個人的には例えば、土や木や葉っぱデータの詰まった森データを渡すことを想定していて
森をリスト型で渡すことは稀
土とかを原子レベルで分解すればリストでいいと思う
同じように、1枚の落ち葉の詰まった落ち葉群をリストで渡す、というのは稀な印象
普通は落ち葉群クラスの落ち葉群インスタンスで渡すと思う
ただ、何の木の種類の落ち葉なのか、重さや枯れ具合など
落ち葉オブジェクトにするまでもない場合
リストに入れて渡す、という選択をする場合はあるが
有志たちはそれはあまりやっていない印象
自分が知らないだけかもしれない
360デフォルトの名無しさん (ワッチョイ 0930-D5CX)
2023/10/13(金) 21:07:38.31ID:x5KSOPoq0 問題提起になったコード見ると書き方のバリエーションだけで
使えや書けとは書いてないわけだが読解力の問題だったか
使えや書けとは書いてないわけだが読解力の問題だったか
361デフォルトの名無しさん (ワッチョイ ee90-6t2b)
2023/10/13(金) 21:08:39.43ID:Sy9RKGN20 >>355で結論が出ているよね。
362デフォルトの名無しさん (ワッチョイ 7da7-bUcQ)
2023/10/13(金) 21:17:00.73ID:tgPT4vYj0 可変長かリストがどちらが便利かこっちを使えなんて話はしてない >>355
363デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
2023/10/13(金) 21:21:31.49ID:e5Ke0Kb/a 組み込みのlistの時点でappendとextendが別れてるというのが全てだと思う
データを管理したいならappend(a)とappend(*a)が同時に使えるように書くべきじゃない
型チェックすれば済むとか、処理を把握してるから分かる、とか以前の問題で
どうしたらそういうコードを擁護しうるのかな……と思う
まあ苦手なものは仕方ないけどね
データを管理したいならappend(a)とappend(*a)が同時に使えるように書くべきじゃない
型チェックすれば済むとか、処理を把握してるから分かる、とか以前の問題で
どうしたらそういうコードを擁護しうるのかな……と思う
まあ苦手なものは仕方ないけどね
364デフォルトの名無しさん (ワッチョイ 0154-Y2ua)
2023/10/13(金) 21:26:32.61ID:CVigb7Ut0 単体で渡してもリストで渡しても処理してくれる
というのは便利なので、よく作るけどな
自分で作ったのに仕様を覚えられない、という原因が大きいかもしれない
というのは便利なので、よく作るけどな
自分で作ったのに仕様を覚えられない、という原因が大きいかもしれない
365デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
2023/10/13(金) 21:30:41.15ID:e5Ke0Kb/a そもそもPythonの関数定義が戻り値1つなら裸で2つなら長さ2のタプルとかいう設計だからね
可変長やアンパックがありがたい場面も当然ある
ただデータを管理するのにそんな書き方する必要は全くないって話
間違いなく不要
可変長やアンパックがありがたい場面も当然ある
ただデータを管理するのにそんな書き方する必要は全くないって話
間違いなく不要
366デフォルトの名無しさん (ワッチョイ 5aa5-8mGx)
2023/10/13(金) 21:39:09.86ID:fJskMopF0 同時に使えるように書くべきじゃないっていうが
append(*{})も普通に動くわけで
*を間違えてつけちゃった と 可変長として間違えました 結果、動いちゃいました
なんて前後でエラー処理する以外にチェックしようがないわけで
間違えた自体と関数分けるのとは話関係ないわな
appendとextendはまさに、可変長使わないなら関数名とアノテーション発生でってことでしょ
append(*{})も普通に動くわけで
*を間違えてつけちゃった と 可変長として間違えました 結果、動いちゃいました
なんて前後でエラー処理する以外にチェックしようがないわけで
間違えた自体と関数分けるのとは話関係ないわな
appendとextendはまさに、可変長使わないなら関数名とアノテーション発生でってことでしょ
367デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
2023/10/13(金) 21:45:01.00ID:e5Ke0Kb/a >>366
少なくともPythonのlistでは引数1個以外のappendは動かないけど、Pythonじゃない言語を触ってるのかな
まあこの一例でも分かるように、1次元配列ですらバグらせる人はバグらせるんだから
インターフェイスはどんな人でも確実に使えるようにしといたほうがいいよ
少なくともPythonのlistでは引数1個以外のappendは動かないけど、Pythonじゃない言語を触ってるのかな
まあこの一例でも分かるように、1次元配列ですらバグらせる人はバグらせるんだから
インターフェイスはどんな人でも確実に使えるようにしといたほうがいいよ
368デフォルトの名無しさん (ワッチョイ 8905-k2x6)
2023/10/13(金) 21:47:35.20ID:oLBZLdpr0 room.add_user(user) ←roomにuserをadd
room.add_users([]) ←roomにuser群リストをadd
list.append("a") ←リストに値をappend
list.extend([]) ←リストをリストによりextend
こうみるとわかりやすいな
関数名の情報量が全然違う
room.add_users([]) ←roomにuser群リストをadd
list.append("a") ←リストに値をappend
list.extend([]) ←リストをリストによりextend
こうみるとわかりやすいな
関数名の情報量が全然違う
369デフォルトの名無しさん (ワッチョイ ae5e-XtdT)
2023/10/13(金) 21:52:27.24ID:UzC3xoYA0 観点のちがいなだけでどれも同意できるけど
ひとりだけ変なのがおる
ひとりだけ変なのがおる
370デフォルトの名無しさん (ワッチョイ 0154-Y2ua)
2023/10/13(金) 21:56:26.67ID:CVigb7Ut0 奇遇だな
俺も圏外から攻撃したいだけの変なのを検出してる
俺も圏外から攻撃したいだけの変なのを検出してる
371デフォルトの名無しさん (ワッチョイ 0a08-bgjR)
2023/10/13(金) 21:56:28.96ID:yy2kD+Fp0 引数1個以外のappendは動かないから何なんだ??>>367
だね、としか言いようがないが。
むしろだからこそ一行の*辞書も*リストも動いちゃうわけで
append,extendが同時に使えるように書くべきじゃない起因ではないし
かといってスター根絶ってわけでもないでしょ、ってことでしょ
だね、としか言いようがないが。
むしろだからこそ一行の*辞書も*リストも動いちゃうわけで
append,extendが同時に使えるように書くべきじゃない起因ではないし
かといってスター根絶ってわけでもないでしょ、ってことでしょ
372デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
2023/10/13(金) 22:02:03.89ID:e5Ke0Kb/a >>371
ごめん、「動いちゃうわけで」の部分が全く理解できないけどどういう意味?
[].append(*a)はaが長さ1の配列で無い限り動かないけど
長さ2でも3でも全部エラーだけど長さ1の配列に限って動くからそれだけはアンパックで書ければ便利って意味?
正気とは思えないな~
ごめん、「動いちゃうわけで」の部分が全く理解できないけどどういう意味?
[].append(*a)はaが長さ1の配列で無い限り動かないけど
長さ2でも3でも全部エラーだけど長さ1の配列に限って動くからそれだけはアンパックで書ければ便利って意味?
正気とは思えないな~
373デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
2023/10/13(金) 22:14:15.69ID:e5Ke0Kb/a 仮に飛行機じゃないとした場合、一番よく使う組み込み型であるlistのappend/extendの仕様すらろくに理解してないで噛み付く人が複数いるスレってことになるが
まさかこのスレのレベルがそんな低いとは思わないから中点2つの・・使ってるアンパック大好きな人がなんか毎レス書き込む回線ブラウザ変えてることと結びつけそうになってしまうけどね
ツッコミどころあるコード乗せてツッコまれたら素直に受け入れたほうがいいよ
まさかこのスレのレベルがそんな低いとは思わないから中点2つの・・使ってるアンパック大好きな人がなんか毎レス書き込む回線ブラウザ変えてることと結びつけそうになってしまうけどね
ツッコミどころあるコード乗せてツッコまれたら素直に受け入れたほうがいいよ
374デフォルトの名無しさん (ワッチョイ 75e6-y8oP)
2023/10/13(金) 22:15:04.38ID:3PC3pmfU0 >>372
>append(a)とappend(*a)が同時に使えるように書くべきじゃない
上での>append(*a)
は>同時に使える、とのことから可変長引数へ渡すため
>*リストも動いちゃう
は、例えばappend(*["a"])とかで可変長引数のためではないでしょ
つまり可変長引数であろうがなかろうが>動いちゃうんだから
>同時に使えるように書くべきじゃない
が理由で >appendとextendが別れてるというのが全てだと思う
と断定するのは的外れ
>append(a)とappend(*a)が同時に使えるように書くべきじゃない
上での>append(*a)
は>同時に使える、とのことから可変長引数へ渡すため
>*リストも動いちゃう
は、例えばappend(*["a"])とかで可変長引数のためではないでしょ
つまり可変長引数であろうがなかろうが>動いちゃうんだから
>同時に使えるように書くべきじゃない
が理由で >appendとextendが別れてるというのが全てだと思う
と断定するのは的外れ
375デフォルトの名無しさん (ワッチョイ d533-Tqdi)
2023/10/13(金) 22:17:47.09ID:v2U3cWHO0 >長さ1の配列で無い限り動かないけど
動いててワロタ
動いててワロタ
376デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
2023/10/13(金) 22:24:28.94ID:e5Ke0Kb/a [].append(*[])
[].append(*[2,3,4])
これ動くかなぁ🤔
こんな明瞭な誤りに擁護がいっぱい付くって…😰
まあ間違い絶対認められないマンが暴れてるだけだろうけど
認められないならまずここで質問しなければいいのに
[].append(*[2,3,4])
これ動くかなぁ🤔
こんな明瞭な誤りに擁護がいっぱい付くって…😰
まあ間違い絶対認められないマンが暴れてるだけだろうけど
認められないならまずここで質問しなければいいのに
377デフォルトの名無しさん (ワッチョイ 6eea-p61u)
2023/10/13(金) 22:28:03.09ID:4579Uo5r0 >これ動くかなぁ
アスペ?
それが許されるならappend(*a)でエラーでたぞ
append無いって言われたから
あーおそらくリストのappendでaも適当に与えておいて、でやっと動いたが
アスペ?
それが許されるならappend(*a)でエラーでたぞ
append無いって言われたから
あーおそらくリストのappendでaも適当に与えておいて、でやっと動いたが
378デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
2023/10/13(金) 22:30:25.92ID:e5Ke0Kb/a >>374
そのレスがまさに「長さ2でも3でも全部エラーだけど長さ1の配列に限って動くからそれだけはアンパックで書ける」って意味じゃん
やっぱり正気とは思えないかな
それは位置引数1個の関数に引数1個渡してんだから動くよ
呼ぶ時にスターアンパック使ってるのが間違いなだけで
長さ2以上で動かないのにスターアンパックしてなんの意味が?
難しい文法は向いてないっぽいから無理しないほうがいいよ😅
そのレスがまさに「長さ2でも3でも全部エラーだけど長さ1の配列に限って動くからそれだけはアンパックで書ける」って意味じゃん
やっぱり正気とは思えないかな
それは位置引数1個の関数に引数1個渡してんだから動くよ
呼ぶ時にスターアンパック使ってるのが間違いなだけで
長さ2以上で動かないのにスターアンパックしてなんの意味が?
難しい文法は向いてないっぽいから無理しないほうがいいよ😅
379デフォルトの名無しさん (ワッチョイ 7683-pfWt)
2023/10/13(金) 22:35:20.34ID:xOQDGR0o0 >>378
もしかしてまったく理解してないのきみのほうでは
仮に可変長引数のappendがあったとして、append(*a)で書きたくなければ無理して書かなくていいんだぞ?
故に*付けた付けなかったってのは
>appendとextendが別れてるというのが全てだと思う
まったく繋がってない 的外れ
もしかしてまったく理解してないのきみのほうでは
仮に可変長引数のappendがあったとして、append(*a)で書きたくなければ無理して書かなくていいんだぞ?
故に*付けた付けなかったってのは
>appendとextendが別れてるというのが全てだと思う
まったく繋がってない 的外れ
380デフォルトの名無しさん (ワッチョイ 850e-iLfk)
2023/10/13(金) 22:40:02.91ID:79uhgkd/0 リスト結合する時は+使うわ
381デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
2023/10/13(金) 22:57:18.57ID:e5Ke0Kb/a >>379
仮にとかじゃなくてlistのappendの話だからね
list.appendは可変長引数取らないから
日本語読めない&list.appendの仕様も知らないのに食い下がる度量は認めるよ
でもPythonは向いてないかも
仮にとかじゃなくてlistのappendの話だからね
list.appendは可変長引数取らないから
日本語読めない&list.appendの仕様も知らないのに食い下がる度量は認めるよ
でもPythonは向いてないかも
382デフォルトの名無しさん (ワッチョイ 09b2-o32V)
2023/10/13(金) 23:19:09.90ID:Ds5LqbN70383デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
2023/10/13(金) 23:19:54.70ID:AHWiHfG4a [].append(*{})は普通に動く、というレベルの認識の人が無闇に可変長引数使わないほうがいいのは間違いないかな
Guidoに習ってappendとextendで分けて引数は常に1個にしよう
Guidoに習ってappendとextendで分けて引数は常に1個にしよう
384デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
2023/10/13(金) 23:25:55.75ID:AHWiHfG4a >>382
そもそも
add_user(user) ⇔ list.append
add_user(*users)⇔ list.extend
これらの比較の話として、同じメソッドに2通りに呼び出しを与えるべきでない、という文脈の話をしているので(しかもuserは自作クラス、usersは自作クラスのリストという制約がついているので混同しようがない)
そこで妙に食い下がっているのは単に君が議論を追えてないだけだよ
list.appendが可変長引数を取ると思っている君がねw
そもそも
add_user(user) ⇔ list.append
add_user(*users)⇔ list.extend
これらの比較の話として、同じメソッドに2通りに呼び出しを与えるべきでない、という文脈の話をしているので(しかもuserは自作クラス、usersは自作クラスのリストという制約がついているので混同しようがない)
そこで妙に食い下がっているのは単に君が議論を追えてないだけだよ
list.appendが可変長引数を取ると思っている君がねw
385デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
2023/10/13(金) 23:26:55.88ID:AHWiHfG4a 自作クラスのオブジェクト ね
386デフォルトの名無しさん (ワッチョイ 0588-osJN)
2023/10/13(金) 23:36:32.04ID:sRXpRcqA0387デフォルトの名無しさん (ワッチョイ 5ae5-GWSq)
2023/10/13(金) 23:57:10.89ID:JzNLMdAt0 >appendとextendが別れてるというの は
>append(a)とappend(*a) のように >同時に使えるように書 けちゃうと不都合があるから >>363
可変長関係なく動く*aを失念してるわな どうみても
>append(a)とappend(*a) のように >同時に使えるように書 けちゃうと不都合があるから >>363
可変長関係なく動く*aを失念してるわな どうみても
388デフォルトの名無しさん (ワッチョイ eb7d-oXAT)
2023/10/14(土) 07:09:49.12ID:8MwVC+VG0 >>380
計算科学の世界とかなら話は別だけど、可読性を考えるとオペレーションでリストの処理を記述するのは微妙かも
計算科学の世界とかなら話は別だけど、可読性を考えるとオペレーションでリストの処理を記述するのは微妙かも
389デフォルトの名無しさん (スフッ Sd33-Kt/B)
2023/10/14(土) 14:06:37.16ID:tZ7gaNQAd390デフォルトの名無しさん (アウアウウー Sadd-f0fU)
2023/10/14(土) 16:44:20.26ID:x03gZ5vca391デフォルトの名無しさん (ワッチョイ d1e0-VGqS)
2023/10/15(日) 00:49:27.64ID:1GgH9uvV0 vim の外部Linux コマンド呼び出しみたいなものだろう
392デフォルトの名無しさん (ワッチョイ 7bad-rPjP)
2023/10/16(月) 06:31:16.76ID:SmfSm8IF0 anacondaで入れてみたけど
普通に入れたほうが楽?
だとよけいに
普通に入れたほうが楽?
だとよけいに
393デフォルトの名無しさん (ワッチョイ 7bad-rPjP)
2023/10/16(月) 06:31:27.47ID:SmfSm8IF0 vscodeだとよけいに
394デフォルトの名無しさん (ワッチョイ 29ad-fyXA)
2023/10/16(月) 07:33:26.99ID:dwn5MUgM0 普通とは?
395デフォルトの名無しさん (アウアウウー Sadd-f0fU)
2023/10/16(月) 10:10:32.26ID:kgcCjrnKa396デフォルトの名無しさん (ワッチョイ 7b7b-LFwp)
2023/10/17(火) 00:02:40.60ID:IDqb6kdg0 Google ColabでTwitterの自動投稿に成功したのですが、
いざEXE化しようと思い、VSCodeに移植しても動きません
というか、iniファイルの読み込みができないようなのですが、
何か方法ありますでしょうか?
一応、ini読み込み用の物なのですが、こちらもうまくいきませんでした。
また、スクリプトも実行すると raise KeyError(key) KeyError: 'BASE'と出して止まってしまいます。
よろしくお願いします。
# 設定ファイルを扱うモジュールをインポート
import configparser
# ConfigParserのインスタンス(特定の機能を持った変数)を取得
config = configparser.ConfigParser()
# 用意したconfig.iniを読み出し
config.read(".\config.ini")
# 変数Config_1の中から、"BASE"セクションの"speed"と"weight"項目の内容を取り出し
read_1 = config["BASE"]["speed"]
read_2 = config["BASE"]["weight"]
# 変数の内容を出力
print("read_1 =", cfg_read_1)
print("read_2 =", cfg_read_2)
いざEXE化しようと思い、VSCodeに移植しても動きません
というか、iniファイルの読み込みができないようなのですが、
何か方法ありますでしょうか?
一応、ini読み込み用の物なのですが、こちらもうまくいきませんでした。
また、スクリプトも実行すると raise KeyError(key) KeyError: 'BASE'と出して止まってしまいます。
よろしくお願いします。
# 設定ファイルを扱うモジュールをインポート
import configparser
# ConfigParserのインスタンス(特定の機能を持った変数)を取得
config = configparser.ConfigParser()
# 用意したconfig.iniを読み出し
config.read(".\config.ini")
# 変数Config_1の中から、"BASE"セクションの"speed"と"weight"項目の内容を取り出し
read_1 = config["BASE"]["speed"]
read_2 = config["BASE"]["weight"]
# 変数の内容を出力
print("read_1 =", cfg_read_1)
print("read_2 =", cfg_read_2)
397デフォルトの名無しさん (ワッチョイ 0101-ZsDs)
2023/10/17(火) 00:20:02.64ID:KXoPz/N40 まずはconfig.readの戻り値を確認
398デフォルトの名無しさん (ワッチョイ 7bad-rPjP)
2023/10/17(火) 03:17:56.82ID:gqGJp+iF0399デフォルトの名無しさん (アウアウウー Sadd-f0fU)
2023/10/17(火) 05:51:43.89ID:hOrq7F7ga config.read("./config.ini")
400デフォルトの名無しさん (ワッチョイ d9d3-VGqS)
2023/10/17(火) 09:39:25.08ID:IfpwnPMt0 config.iniの書き方なのでは
401デフォルトの名無しさん (スフッ Sd33-LFwp)
2023/10/17(火) 13:58:02.86ID:W1mvng0kd >>397,400
ありがとうございます。
返り値はNoneでした。
また、"./config.ini"やフォルダをつくって
"./config/config.ini"やフルパスも試しましたができませんでした。
何か環境構築が間違っている可能性があったりするのでしょうか?
GoogleColabではエラーなく実行できるのに・・・
(;´д`)
ありがとうございます。
返り値はNoneでした。
また、"./config.ini"やフォルダをつくって
"./config/config.ini"やフルパスも試しましたができませんでした。
何か環境構築が間違っている可能性があったりするのでしょうか?
GoogleColabではエラーなく実行できるのに・・・
(;´д`)
402デフォルトの名無しさん (JP 0H25-Fhx2)
2023/10/17(火) 14:15:23.43ID:lA46vkBGH GoogleColabではいくつかのモジュールが最初からインストールされている。
Vscodeでは必要なモジュールをpipでインストールする必要があるのでは?
Vscodeでは必要なモジュールをpipでインストールする必要があるのでは?
403デフォルトの名無しさん (アウアウウー Sadd-f0fU)
2023/10/17(火) 14:26:21.59ID:vCPpyEw2a もしそうなら
import configparser
でエラー出てるはずだけどそこは出てないんだろ
import configparser
でエラー出てるはずだけどそこは出てないんだろ
404デフォルトの名無しさん (アウアウウー Sadd-f0fU)
2023/10/17(火) 14:32:36.89ID:vCPpyEw2a vscode 内の python から観て './' が実際はどこなのかを確認した方が良いな
print(os.path.abspath('./'))
print(os.path.abspath('.'))
print(os.path.abspath('./'))
print(os.path.abspath('.'))
405デフォルトの名無しさん (ワッチョイ b332-jUDJ)
2023/10/17(火) 15:06:00.27ID:HxEc0Y/V0 >>396
そのコードのままだと
config.read(".\config.ini") はcolabでは読み込めなかったな
もしそのまま移植したって場合に
元はconfig.read("./config.ini")だったけど移植作業中に
".\config.ini"とか"絶対パス.\config.ini"になっちゃったとか?
そのコードのままだと
config.read(".\config.ini") はcolabでは読み込めなかったな
もしそのまま移植したって場合に
元はconfig.read("./config.ini")だったけど移植作業中に
".\config.ini"とか"絶対パス.\config.ini"になっちゃったとか?
406デフォルトの名無しさん (ワッチョイ c901-RNWa)
2023/10/17(火) 15:06:09.46ID:T5fw5RAV0 >>396
そのコードのままだと
config.read(".\config.ini") はcolabでは読み込めなかったな
もしそのまま移植したって場合に
元はconfig.read("./config.ini")だったけど移植作業中に
".\config.ini"とか"絶対パス.\config.ini"になっちゃったとか?
そのコードのままだと
config.read(".\config.ini") はcolabでは読み込めなかったな
もしそのまま移植したって場合に
元はconfig.read("./config.ini")だったけど移植作業中に
".\config.ini"とか"絶対パス.\config.ini"になっちゃったとか?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- Perfume・あ~ちゃんの結婚相手の一般男性、吉田カバンの社長と判明 [977261419]
- AIアーティストだけど作品公開する
- 地球から無限km先の場所ってどうなっているの?
- お前らインターネット大規模障害起きてたとき何してた
- 自民党議員「高市は先人が築き上げた日中関係を壊した。外務省が謝罪に言ってるが自分で責任を取れ」 [834922174]
- 日本、高市のお陰で破滅に近づくwwwwwwww
