23/10/05 20:25:01.10 86J8E1XoM.net
>>259
そうなんだありがとう
モジュールはメモしておいた方がよさそうだ
264:デフォルトの名無しさん
23/10/05 20:28:43.13 86J8E1XoM.net
pip freezeでパッケージの一覧を作成できるのか
色々導入していたわ
265:デフォルトの名無しさん
23/10/06 10:15:56.07 Zl0hPCVya.net
なんで特定のバージョンに依存する描き方をしたがるんだろ
266:デフォルトの名無しさん (ワッチョイ e3ff-uznD)
23/10/06 16:14:40.86 IoTyA8+w0.net
>>263
これどういうこと?
267:デフォルトの名無しさん
23/10/06 19:45:56.36 1GaBjHDa0.net
dockerとかrequirements.txtとか再現性高めようとすると
必然的に特定のバージョンに依存するような書き方になると思うのだが。
最新バージョンで過去のバージョンの描き方してる、とかいう元も子もない前提条件なら知らんけど
268:デフォルトの名無しさん
23/10/06 22:02:44.19 fyVU6Crm0.net
>>243
そのポリシーに賛同するかどうかはともかく、質問への回答にはなっていない
269:デフォルトの名無しさん
23/10/06 22:02:55.99 fyVU6Crm0.net
>>243
そのポリシーに賛同するかどうかはともかく、質問への回答にはなっていない
270:デフォルトの名無しさん
23/10/07 00:23:30.85 BGf9xocdM.net
func( *l if a else l )
条件分岐で
*l と l
渡せると思ってたら
func( *(l if a else l) )
だった
親lがリストのときは*lで
親lがリスト以外のときは[l]
ってやりたいときこれでいいのかな
def func(*args):
print( list(*args) )
l=[{"a":1},{"b":2},{"c":3}]#[["a",1],["b",2]]
#l={"d":4}
func(*(l if isinstance(l,list) else [l]) )
#[{'a': 1}, {'b': 2}, {'c': 3}]
#[{'d': 4}]
271:デフォルトの名無しさん
23/10/07 00:26:09.11 sH3Ijf0D0.net
typeを使うのでは
272:デフォルトの名無しさん (ワッチョイ 6e41-GmSQ)
23/10/07 02:03:39.77 RYTHxcGi0.net
では、とは?
273:デフォルトの名無しさん
23/10/08 10:38:55.23 CrdCteTPa.net
あるいは func(*l) if isinstance(l, list) else func(l)
あるいは func(*l) if type(l) is list else func(l)
274:デフォルトの名無しさん
23/10/08 13:04:34.27 DaqKIDwO0.net
func if func的に2度func書くメリットがいまいちわからん
275:デフォルトの名無しさん
23/10/08 13:16:17.82 +xSVm5Mx0.net
三項演算子だからでは
276:デフォルトの名無しさん
23/10/08 13:40:38.67 RkxvDOHc0.net
Pythonの三項演算子カコワルイ
C言語とかの方がパッと見て解りやすい。
(isinstance(l, list)) ? func(*l) : func(l) ;
277:デフォルトの名無しさん
23/10/08 13:52:37.91 +xSVm5Mx0.net
コロンにそうでなければ、という意味を持たせる文化圏は無い
278:デフォルトの名無しさん
23/10/08 14:06:28.33 KpUyeA1F0.net
funcに返り値があったとして
f = func if func
f["res"]
# or
res = ( func if func )["res"]
またfunc内に引数分岐処理を隠蔽できる可能性を残したとして
func if func的に2度func書くメリットがいまいちわからん
279:デフォルトの名無しさん
23/10/08 14:47:59.95 CrdCteTPa.net
>>274 ほんそれ
三項演算子のマクロか関数みたいなのがあったとして
tri(isinstance(l, list), func(*l), func(l))
でもまだましだったと思う
280:デフォルトの名無しさん
23/10/08 14:54:32.17 CrdCteTPa.net
>>276 みたいなのがいるから
true のときの func と false のときの func が常に同じことが確実な場合
tri(isinstance(l, list), func, (*l), (l))
でも良いが
281:デフォルトの名無しさん
23/10/08 15:02:00.39 kixUsqHh0.net
値を返せるifを追加してくれる方がうれしいわ
実装は関数のシンタックスシュガー
282:デフォルトの名無しさん
23/10/08 16:02:51.80 J25crwC10.net
値を返せるifって例えばなんですか
283:デフォルトの名無しさん
23/10/08 16:17:18.80 +xSVm5Mx0.net
むしろ値を返す方が主流だろうに
284:デフォルトの名無しさん
23/10/08 16:57:27.95 Er3q4bv00.net
同じ関数を呼ぶのにアンパックするかしないかの条件分岐をさせるのは
あまり筋がよくないように感じるんだけど俺だけかな?
285:デフォルトの名無しさん
23/10/08 17:44:40.59 RkxvDOHc0.net
>>282
なに言ってるか解らん。
筋が良いように感じるコードを示しなよ。
286:デフォルトの名無しさん
23/10/08 18:05:22.35 wK2D7Ptr0.net
>>279
で、できたのが今の python の三項演算子
287:デフォルトの名無しさん (ワッチョイ 0d01-wavJ)
23/10/08 18:54:48.99 e0NfdHuO0.net
>>282
普通に悪いだろうね
どういう設計かわからん
入力整形するヘルパー関数書くべき
288:デフォルトの名無しさん
23/10/09 00:17:46.66 XNvR9diB0.net
式か文かのお話
289:デフォルトの名無しさん
23/10/09 13:00:29.46 T44TvStm0.net
printって
print(txt1,txt2,txt3)
って感じの仕様だけど
この仕様のメリットってなんなの?
t=[txt1,txt2,txt3]
print(*t)
みたいに書けて名前引数でもオプション設定できたりするくらい?
↑だとprintのソースコードは、def print(*values,,,option):な感じだけど
もしprintが
def print(values=[],option=,,,,**kwrgs):(valuesがlistか否かの処理)
みたいな仕様だったら実装上は
print([txt1,txt2,txt3],option)とかprint(txt1)
って書くことになる
個人的になんか見た目がダサいというか・・
単に好みの問題?
290:デフォルトの名無しさん
23/10/09 13:50:57.64 3+LduzXw0.net
まあ、基本は一つだけprintだしな
スペースで区切っていくつも表示したいというデバッグ的な使い方で複数書くくらいでは
291:デフォルトの名無しさん
23/10/09 14:20:36.51 Xgju9ZEc0.net
print "result=", value
みたいにやってた流れだろ
292:デフォルトの名無しさん
23/10/09 15:08:30.25 gMk1hFfQa.net
>>287
昔のPythonは()すら無かった
293:デフォルトの名無しさん
23/10/09 15:08:44.75 gMk1hFfQa.net
>>287
昔のPythonのprintは()すら無かった
294:デフォルトの名無しさん
23/10/09 17:42:01.48 DsI96EBHa.net
>>287
実際pprintの方は引数1個しか取れなかったりする
深い意味ないんじゃない?
printは人間に見やすくするためにあるものなので今の仕様が悪いとは思わない
カッコ一つ多く書かされたらめんどい。今の仕様の理由もそんなんだろ
295:デフォルトの名無しさん
23/10/09 22:00:24.57 XTD+q5nh0.net
print(), print(a), print(a, b, c)と
print([]), print([a]), print([a, b, c])とどっちがいいかという話
関数定義の*argsは可変長の引数を扱う場合に
使いやすくしたり読みやすくしたりするためにある
pprintは用途的に位置引数1つで妥当
296:デフォルトの名無しさん
23/10/10 00:57:06.49 DfzpOsqL0.net
a = b = {}
みたいにしたらaとbは同一の辞書を指すじゃん?
aとbが別々の辞書を指すように一行で初期化できますか
297:デフォルトの名無しさん
23/10/10 01:14:32.36 28KhUAam0.net
a, b = {}, {}
298:デフォルトの名無しさん
23/10/10 04:09:25.99 DfzpOsqL0.net
>>295
内包表記で書けるって知りました
ありがとうございました
299:デフォルトの名無しさん
23/10/10 04:36:44.80 x5TUUmSg0.net
>>293
オブジェクトを人間にわかる形に翻訳して見せるのがprintの目的なんだから
位置引数1個しか取れないとしてもそれはそれで合理的ではある
逆にprintが可変長引数取れるならpprintが取れても良い
実際の使用例で便利だから引数いっぱい送れるってだけだろうな
300:デフォルトの名無しさん (ワッチョイ ae7b-OOOs)
23/10/10 23:14:31.83 SP1p/Ht00.net
Twitterで自動投稿しようと思って練習してます。
文字の投稿は成功したんだけど、画像の投稿ができません。
最近(10月)取得の無料APIでは1.1での画像アップロードはできないのでしょうか?
301:デフォルトの名無しさん (ワッチョイ ae7b-OOOs)
23/10/10 23:31:40.21 SP1p/Ht00.net
Twitterで自動投稿しようと思って練習してます。
文字の投稿は成功したんだけど、画像の投稿ができません。
最近(10月)取得の無料APIでは1.1での画像アップロードはできないのでしょうか?
302:デフォルトの名無しさん (ワッチョイ 2601-AeST)
23/10/10 23:46:10.35 x1soPZHV0.net
>>297
>オブジェクトを人間にわかる形に翻訳して見せるのがprintの目的なんだから
人間にわかる形に翻訳するのは各オブジェクトに定義されている__str__の役割
どういう文字列表現にするかはprintを呼び出す前から各オブジェクトごとにすでに決まっていてprintは関知しない
逆にpprintの場合はどういう文字列表現にするかを基本的にpprintが決めている
同じ型のオブジェクトでも異なる文字列表現が要求されることを前提とした用途なので
便利な状況が多いかどうかで仕様が決まるのはその通り
つまりprintは可変長の位置引数が取れたほうが便利な状況が多いが
pprintは可変長の位置引数が取れても便利な状況があまりないということ
303:デフォルトの名無しさん (ワッチョイ 5ae7-ZI+Z)
23/10/11 13:09:57.77 4b2h4etA0.net
話が別の方向行ってる気がする
print、pprintであろうがなかろうが
リスト指定できるときは可変長の方がよくねって話じゃないのか
hoge([a,b,c])
ではなく
hoge(a,b,c,,,)
hoge(*args)
リスト形式とか行列扱うときは基本
それ専用のオブジェクト渡すわけだし
#objはリストを持つ
hoge(obj)
つまりかなりざっくり言うと
hoge(list)、hoge([])
はダサい、みたいな
304:デフォルトの名無しさん (ワッチョイ ee01-AeST)
23/10/11 18:07:12.31 PDwzRB+80.net
>>301
>リスト指定できるときは可変長の方がよくねって話じゃないのか
リストを受け渡すところを全部可変長引数にしたら
様々な弊害が出るのはもちろんだが根本的に想定してる用途が違う
可変長引数はコレクションやコンテナにまとまった一連の要素ではなく
それぞれ独立した値を受け渡すことを主たる使い方として想定している
コレクションまるごと受け渡すのが基本的に想定してる用途なら可変長引数は使わない
305:デフォルトの名無しさん (ワッチョイ 5a8a-DaTE)
23/10/11 18:19:00.12 pWrOFW+D0.net
>様々な弊害が出る
例えば・・?
306:デフォルトの名無しさん (ワッチョイ e964-wavJ)
23/10/11 18:43:03.61 5UtQ/lO50.net
>>300
pprintが決めてるっていうの知らなかった。
何を使ってるの?
reprじゃなく使うものあるの?
307:デフォルトの名無しさん (ワッチョイ 0154-Y2ua)
23/10/11 18:55:29.16 5Z/moFAt0.net
文字列にするところまでは別の人で、それをどう表示するかがpprint
308:デフォルトの名無しさん
23/10/11 20:10:05.07 Jxad2l7za.net
例えばRoomクラスとUserやUserクラス作ったときに
Userクラスのメソッドで[user1,user2,user3,]渡せたり
RoomクラスにUserインスタンスのリストを渡せる仕様にしたとき
まとめて渡せるけどむしろ野暮ったく感じるのはおれだけだろうか
可変長引数を使わない場合
user1=User(ユーザー1)
users = []
users.append(user1)
room = Room(users)
#room.add_user(users)
↑ユーザーを渡していますよ、というより(ユーザーだけが格納された)コレクションを渡していますよという意味合いが強まってしまう、気がする。もちろんリストを渡さなければいいわけだがそれだとadd_usersなど複数形のときにはリスト渡そうね、といったアノテーションが増える。なんか野暮い
可変長引数を使う場合
user1=User(ユーザー1)
room = Room()
room.add_user(user1)
#room.add_user(user2,user3,,)
#users=[user4]#users.append(user5)
#room.add_user(*users)
↑ユーザー単体を渡している感が強まる、気がする。add_userで可変長引数使いたくないときはそもそもひとつしか渡さなければいいし、複数可は可変長引数をもったadd_usersにでも任せればいい(なければ使えないだけ)。渡された値の正否に集中できるので例外処理がシンプル
リスト渡したいときは、リストの各値の扱いがバラバラのとき、[int,str,obj1,obj2,,,]みたいなときくらいしか無いような気がするんだがそれだと、そもそも設計ミスのような。もちろん近くのコンビニに部屋着で行く感覚ならどうでもいいと思うけど
309:デフォルトの名無しさん
23/10/11 21:05:21.93 5UtQ/lO50.net
そもそも可変長で追加したいと思ったことないや
1個追加するappendでforループ回したほうがバグりづらくない?
どうしても用意したいならappend, extend,で list の操作と名前を揃えるとか?
310:デフォルトの名無しさん
23/10/11 21:11:21.59 5UtQ/lO50.net
Pythonって配列の形状の指定がないことが多いから、長さ不明なスターアンパック自体やっぱ危険じゃね?と思う
それで書くのが明らかに簡潔なケースでは当然使うけど、そういうのも最終的にはリストかnumpy配列の委譲で実装しちゃうからメソッドの名付けで困ったことはないかも
委譲先のをパクる
311:デフォルトの名無しさん
23/10/11 21:48:59.91 dwLcTMya0.net
スターアンパックで危険って例えば・・?
312:デフォルトの名無しさん
23/10/11 22:06:40.32 dWNDikg30.net
numpyとかはコレクション自体が本体みたいなもんだからリスト渡すのはわかる
しかしリストの各値を個別で扱いたい場合、各値を扱う目的とは別に
その値を格納したリストそのものに別の目的が生まれてしまう
その次元を下げてくれるのがスターの目的だと思う
313:デフォルトの名無しさん
23/10/11 22:14:51.53 lnf3XQiK0.net
>そもそも可変長で追加したいと思ったことない
それは普通にそれでいいんじゃね
可変長使わずにadd_users追加しましたってときに
「usersなんだから”当然”リスト渡すよねー(渡すのはリスト型だよねー)」(もっと言えばuserのみが格納されたリスト型だよねー、またはusersオブジェクトとかでもいい)
みたいなアノテーションが必然的に発生するのがモヤモヤするだけで。
314:デフォルトの名無しさん
23/10/11 22:51:38.36 Z7/f/t+S0.net
>>306
そのケースは基本的に可変長引数を使う状況ではない
1件追加するためのAPIと複数一括で追加するためのAPIは分けるべき
複数一括で追加するメソッドの中身が1件1件追加するのと同じ処理なら
後者のAPIは用意せず利用者側がループを回すのでも十分
一括処理の最適化がされてるなら複数形にするだけでなく
複数件一括処理であることを示す命名を状況に合わせて考えればいいと思う
315:デフォルトの名無しさん
23/10/11 22:56:16.70 rx/2vzyO0.net
>そのケースは
どのケースのことを言ってるのかまったくわからんが
使わないなら使わなくていいって言ってるがな
316:デフォルトの名無しさん
23/10/11 22:58:21.14 Z7/f/t+S0.net
>>304
各オブジェクトのreprを利用する場合もあればしない場合もある
そういうのを含めてどういう文字列表現にするかをpprintが決めてるということ
pprint自体はpythonで書かれててそんなに難しくないからソース見てみればいいよ
URLリンク(github.com)
317:デフォルトの名無しさん
23/10/12 10:46:44.12 u59ybXeVa.net
>>301
呼ぶ側でパラメータが複数のときと1個であることが判ってるときに
fuga = [a, b, c]
hoge(*fuga)
と
hage = [p]
hoge(*hage)
の様に無理やりくっつけるのはダサくないのか?
hoge(p)
で良いだろ?
318:デフォルトの名無しさん
23/10/12 11:11:35.88 QP/ncIDa0.net
不合理なこと、手間がかかること、読みにくいことを避ける
合理的で簡潔で読みやすければ、ダサくてもそれが正解
319:デフォルトの名無しさん
23/10/12 11:47:55.21 ff5KX8HX0.net
みんなが何の話をしてるのかわからん
ある特定のケースで関数が引数に可変長引数かリストのどっちを受け取るべきかっていう話?
それとも、そもそも可変引数は引数は必要かっていう話?
今の議論に** オペレータは含まれる?
320:デフォルトの名無しさん
23/10/12 11:49:19.75 ff5KX8HX0.net
>>317
>それとも、そもそも可変引数は引数は必要かっていう話?
それとも、そもそも可変引数は必要かっていう話?
ちょっとみすった
321:デフォルトの名無しさん
23/10/12 11:49:27.64 ff5KX8HX0.net
>>317
>それとも、そもそも可変引数は引数は必要かっていう話?
それとも、そもそも可変引数は必要かっていう話?
ちょっとみすった
322:デフォルトの名無しさん (ワッチョイ 8d2a-dsh4)
23/10/12 13:25:38.85 B82UzHiK0.net
PythonでStableDiffusionで使われるsafetensorsをonnxファイルに変換するアプリを作り、ユーザーに配布したいのですが、ユーザーにPython環境を構築させないで済む方法があれば教えてください
GUIから使用したいのでPythonでコマンドラインアプリを作成しC#で作ったGUIからC#のProsses.Start()で起動して動かしたいと思いますが
例えばPythonをインストールしていないPCでProsses.Start("〇〇.py")をやっても動きませんよね?
どうすればいいでしょうか?
323:デフォルトの名無しさん (ワッチョイ d56a-S03z)
23/10/12 13:35:59.07 XSGwFcLX0.net
>>315
>複数のときと1個であることが判ってるとき
うん、だからadd_itemで可変長使いたくないなら使わなくていいしadd_itemsで可変長使えばいいし
別に可変長使ったadd_itemでitem複数追加できる仕様にしてもいいしって言ってる
add_itemであろうがadd_itemsであろうが
リスト渡す場合に「当然リスト形式で渡すよね」というアノテーション発生が問題なのであって、と言っている
リストに限らず、リスト渡すなら渡すで、オブジェクト渡すなら渡すで、
どうしてその形式なの?の前提があるでしょ
324:デフォルトの名無しさん (ワッチョイ 6eb9-atGC)
23/10/12 13:41:54.06 vYXKnMxn0.net
>>303,309
が知りたい
325:デフォルトの名無しさん (ワッチョイ b17c-/Lnu)
23/10/12 14:32:29.65 WrmmhFIY0.net
あえて複数形のない日本語で考えるとわかりやすいかもな
add_うどん()
add_うどん(うどん)
うどんが何うどんだとかどこ産のうどんだとかは、add_うどんメソッドには依存しない
とにかく、うどんを渡せばよくて
そのうどんが、うどんクラスのインスタンスだったりするかもしれないってだけ
だが、リストで渡せてしてしまうと
add_うどん([うどん、うどん、うどん、、])
[]←これなに? → うどん(など)の配膳カートです
これはうどんじゃなくてカートを渡したってことになる
「カートには入れたが、複数杯(や玉)のうどんを渡したって意味な」
というのが自分も含め通じてしまうのは
Listはそうときに使う(使いたい)からっていう共通認識だけでしかない
"add_うどん_を_配膳カート_で_()"
とかだったら配膳カートをクラス化して渡せばいいし
(リストの機能で十分なら)クラス化せずともリストで渡してもいいのはわかる
でも大抵、リストを渡す時はそこらへん省略されてるかアノテーションで判断してる気がする
なぜならadd_うどん内部での配膳カートはイテラブル程度の機能しか使わないことが多いから
リストを渡す、は本当はそれ自体に意図があり
可変長引数はその意図を論理的に省略することができる
326:デフォルトの名無しさん (ワッチョイ 0548-3JHV)
23/10/12 15:36:59.50 gAp1qlED0.net
なんか知らんが草
327:デフォルトの名無しさん (アウアウクー MM35-wavJ)
23/10/12 15:40:56.90 B5sD+hFhM.net
>>309
危険というか単にバグりやすくなるってだけ
多重配列が危ない
リストのリスト、リストのリストのリストとかでアンパック使うと少なくとも俺はすぐバグる
あんまり入れ子になるなら普通は自作クラス定義するがリストとタプルで済ませたいこともあるから
自作データクラスのリストとかは多重配列に近いと思うのでアンパックをホイホイ使うとバグりやすいんじゃないかなと
328:デフォルトの名無しさん (アウアウクー MM35-wavJ)
23/10/12 15:47:06.45 B5sD+hFhM.net
アンパック使ってもforで書いてもほとんど同じだけど多重配列ならforの入れ子で書いたほうが階層の把握に間違いがないってことね
1重配列なことが確実ならスターアンパックで問題ないと思う
329:デフォルトの名無しさん (ワッチョイ 0154-Y2ua)
23/10/12 16:07:06.78 QP/ncIDa0.net
組み込みの型を使ったらそうなるって
listにはlistという意味しか無いんだから
型に意味を持たせたいならクラスを作るしか
330:デフォルトの名無しさん (ワッチョイ 85cf-d6sz)
23/10/12 16:22:18.67 a6KaL/fa0.net
>バグりやすくなる >少なくとも俺はすぐバグる
なにこれ
めっちゃふわふわしてて全然わからん
具体的にどういうとき・・?
331:デフォルトの名無しさん (ワッチョイ 69e4-NDEe)
23/10/12 16:27:05.61 kcOw/s7X0.net
>>327
>型に意味を持たせたいならクラスを作るしか
そうだよだからクラス作って渡せばいい
でも結局、そのクラスがリスト持つなら同じように
そのクラスのリストに>>323のような意図が出てくるだけ
332:328 (ワッチョイ 0d01-5AJl)
23/10/12 16:39:38.79 qIe0UAcP0.net
一応自分でも考えてみたが多次元配列をスターで再帰するときとか?
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)
例えばこれは数値だけだからまだいいけど
辞書やらだった場合に条件分岐が面倒とか・・?
でもそれバグというより設計ミスだしな
バグってなんだろ
333:デフォルトの名無しさん (ワッチョイ 05b1-h3B4)
23/10/12 18:00:33.28 D2IWbE4K0.net
個人的に第一引数設計の優先順位は
①単数
②単数・複数(可変長引数)= ③単数・複数(関数名に引数の意図を明示&リスト)
④単数・複数(単純展開が目的のリスト)
①はよく見る(というか複数しなければほぼ必須なので当たり前)
②は①で実装できる範囲なのであまり見ない(例 [ list.append(i) for ])
③をするくらいなら渡す値をクラス化していることが多い
④は①で実装できる範囲なのであまり見ない、個人用途コードでよく見る
第一引数でなくとも(行列の演算でもない限り)リストを渡すのは微妙
334:317
23/10/13 10:32:08.61 uOHCnao90.net
誰か教えて下さい、、
335:デフォルトの名無しさん
23/10/13 10:36:29.66 b6IM7MTY0.net
>>331
>②単数・複数(可変長引数)
可変長引数は単数・複数を同時にサポートするためにあるんじゃないんだよ
そもそもの大前提として一つの関数や一つの変数で単数・複数を同時にサポートしようとするのは特殊なケースを除いて基本的に悪手だからね
336:デフォルトの名無しさん
23/10/13 10:40:10.61 AODTp1VX0.net
>同時にサポートするためにあるんじゃない
printさん・・
337:デフォルトの名無しさん
23/10/13 10:44:37.94 YTjLrT3n0.net
ん・・ちょっとまてよだったら可変長引数使う時は
hoge() ←ダメ
hoge(a) ←ダメ
↑は条件分岐でそもそも実行させないようにして
少なくとも
hoge(a,b)
ここから推奨ってこと?
可変長ってそんな概念だったっけ・・?
338:デフォルトの名無しさん
23/10/13 10:48:38.24 zcTNSeqM0.net
>>333
>同時にサポートするためにあるんじゃない
ドキュメントやらどこかに明記されてたってこと?
339:デフォルトの名無しさん
23/10/13 11:33:13.84 9tKKj3QG0.net
pythonの設計思想は知らんけど
>かへん‐ちょう〔‐チヤウ〕【可変長】 長さ・桁数・文字数・データの大きさなどが定まっていないこと。
言葉の意味からして
>同時にサポートするためにあるんじゃない
はさすがに違和感あるわ
340:デフォルトの名無しさん (ワッチョイ 0154-Y2ua)
23/10/13 11:46:57.67 CVigb7Ut0.net
> 長さ・桁数・文字数・データの大きさ
のどれでもなく、パラメータの個数だよな
341:デフォルトの名無しさん (ワッチョイ 01bc-bwTL)
23/10/13 12:01:59.94 Ovg0M26I0.net
などが
342:デフォルトの名無しさん
23/10/13 12:21:03.84 CVigb7Ut0.net
lengthが数を表すという文化が歪んでるんだよな
なんでlenじゃなくてsizeにしなかったんだろう
343:デフォルトの名無しさん (ワッチョイ 8d2a-pUf+)
23/10/13 13:11:04.18 C21zpC1k0.net
自分の誤読をごまかすために文化に難癖つけ始めた
344:デフォルトの名無しさん (ワッチョイ 5aad-VZIV)
23/10/13 14:03:08.40 6NvcCRtg0.net
おはよう!
URLリンク(ideone.com)
これがエラーがでるんだが。
どうしたらいいのでしょうか?
345:デフォルトの名無しさん (ワッチョイ 0a5f-SXiR)
23/10/13 15:48:46.04 CCLNG/R30.net
単数・複数の定義からはじめないといけないのか
先の例を借りるなら
def add_user(user: User)が単数
def add_users(users: list[User])が複数
この2つを一つの関数でサポートしようと�
346:オて def add_user(*users: User)のようにするのが間違った可変長引数の使い方
347:デフォルトの名無しさん (ワッチョイ 5a47-f11/)
23/10/13 16:27:41.27 o2+w7ksq0.net
>>343
>間違った可変長引数の使い方
エラーでるの?
バグりやすいの?
>>336 >ドキュメントやらどこかに明記されてたってこと?
てか同じこと言ってない?w
で、言う割にはなぜか論理的に説明はできないっていうの繰り返してるような
348:デフォルトの名無しさん (ワッチョイ 0154-Y2ua)
23/10/13 16:50:17.50 CVigb7Ut0.net
根拠がダサいだしな
ダサいかどうかを基準とする考え方はダサい
349:デフォルトの名無しさん (ワッチョイ da02-4yUX)
23/10/13 17:31:26.11 TNjzrdTI0.net
すべて羅列するなら(名前付き引数や**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名でやるなら
単数①、単数③、複数③、複数②だな
本質は複数①②が同列に扱われている、という部分だと思う
350:デフォルトの名無しさん (ワッチョイ 8d2a-dsh4)
23/10/13 18:25:27.74 /53+FR130.net
最近Python始めたんだがGitHubで公開されてるStableDiffusionのsafetensorsファイルをOnnxファイルに変換するスクリプトをクローンして使って見たんだ
その中でハギングフェイスのライブラリ使ってんだがそのライブラリに変更があったみたいでスクリプトがまともに動かなくなってた
Pythonってこういうことよくあるの?
351:デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
23/10/13 18:29:10.51 sP+zp0cDa.net
>>344
ごめん、そもそもadd_users(*users)と書く設計にしても全然動くわけで
どう書くと「書く側の人間が」「バグらせやすい」という話を一貫してしてると思ってたのでまさかそこが理解できないとは思わなかった
「バグりやすい」より「バグらせやすい」と書いたほうが親切だったね、どちらでも意味が通るけど
352:デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
23/10/13 18:36:26.11 sP+zp0cDa.net
>>330
来る配列の深さもshapeもわからないなら再帰で書くしかないからそれはスターアンパックで書いて構わないと思うよ
2重配列とか3重配列とか、numpyで言えばndimとかshapeの一部が決まってる多重配列を扱う場合にスターアンパック使うのはよくないと思う
こういうのは俺が勝手に言ってるだけでもなくて例えばEffective Pythonには4つ以上の要素を含む(1次元)配列をスターアンパックするなと書いてある
2重、3重、4重とかの組み込み型の多重配列は普通にコード書いて出てくるがそれらをほいほいスターアンパックすればよりバグを生みやすいと思う
add_users(*users)は俺にはアンチパターンに見える
353:デフォルトの名無しさん (ワッチョイ dafa-h7+a)
23/10/13 19:36:16.66 v7U/yjft0.net
>add_users(*users)は俺には
嫌ならそう書かなければいいだけでは・・?
多重配列の生成とその扱いを混同してるんだと思うが
usersがUserクラスを持つならそれに従えばいいと思うぞ
例えば4つ以上といわず[np,np,np,,,,,]扱う、みたいなケースがあるのかはしらんが
無理にスターアンパックする必要ないわけで
>>308>書くのが明らかに簡潔なケースでは当然使うけど
と同じように逆然りでしょ
354:デフォルトの名無しさん (ワッチョイ 9501-XMkt)
23/10/13 19:38:42.67 gtyKnuUL0.net
print関数という実績
355:デフォルトの名無しさん (ワッチョイ b10c-bncC)
23/10/13 19:57:29.33 rRALxWOX0.net
add_users(user1,user2)と書いてもadd_users(*users)と書いても動いちゃう
だから(書く側の人間が)バグらせやすいんだ
そんなことある・・?
False==0で動いちゃった、よりよっぽどましだと思うが。。
だって少なくともエディタの補助範囲内だし
356:デフォルトの名無しさん (ワッチョイ da3e-vdcw)
23/10/13 20:09:45.61 hDXnu7+A0.net
自分の取り扱ってるデータが何なのか理解せずに関数に渡すことがまずありえないしな
357:デフォルトの名無しさん (ワッチョイ 5a79-GYY9)
23/10/13 20:24:35.57 ZA5Rx9q50.net
・1つしか渡す機会がない
・リストしか渡す機会がない
・管理別々の2つ以上の変数を渡したい時がある
・処理速度が気になる場所
などなど
臨機応変に使い分けちゃえば?
358:デフォルトの名無しさん (ワッチョイ 76d6-n+VP)
23/10/13 20:46:44.55 K56rmpTB0.net
あんまり興味ないけど一言
print関数はプログラマにとっての使いやすさに特化してるから可変長引数でいいけど
普通の関数には使わないほうがいい
iterableを受け取る設計がいいことが多い
359:デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
23/10/13 20:47:33.98 e5Ke0Kb/a.net
>>350
>>352
まあ、問題提起になったコード見るとまずadd_user(*users)と書いてるし色んな意味で論外と思う
表現と処理が一致してないし、可変長引数するのに単体のuser渡すのと同じ関数になってる必要がないしね
アンチパターンではかなり優しい表現になってしまう
360:デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
23/10/13 20:50:53.31 e5Ke0Kb/a.net
端的に言うと、プログラミングが苦手な人が書くコード
361:デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
23/10/13 20:58:43.17 e5Ke0Kb/a.net
そもそも自分一人しか見なくて完全にロジックを把握できてるコードなら縛り無く好きに書けばいいんだよ
ここでどう書くのがキレイか?とか聞く時点でバグらせづらさとか、プロジェクトとして複数人で共有した場合の能率の話とかしてると考えるのが当たり前だよね
なのにアンチパターンとかバグりやすいとか言われると怒る心理がよくわからんよ
add_user(*users)は書いたら恥ずかしいコードだよ
362:デフォルトの名無しさん (ワッチョイ daad-GqR6)
23/10/13 21:03:29.43 LOKUwuMW0.net
臨機応変な有志たちは、>>346単数①に収束してる >>354
・リストしか渡す機会がない
は個人的には例えば、土や木や葉っぱデータの詰まった森データを渡すことを想定していて
森をリスト型で渡すことは稀
土とかを原子レベルで分解すればリストでいいと思う
同じように、1枚の落ち葉の詰まった落ち葉群をリストで渡す、というのは稀な印象
普通は落ち葉群クラスの落ち葉群インスタンスで渡すと思う
ただ、何の木の種類の落ち葉なのか、重さや枯れ具合など
落ち葉オブジェクトにするまでもない場合
リストに入れて渡す、という選択をする場合はあるが
有志たちはそれはあまりやっていない印象
自分が知らないだけかもしれない
363:デフォルトの名無しさん (ワッチョイ 0930-D5CX)
23/10/13 21:07:38.31 x5KSOPoq0.net
問題提起になったコード見ると書き方のバリエーションだけで
使えや書けとは書いてないわけだが読解力の問題だったか
364:デフォルトの名無しさん (ワッチョイ ee90-6t2b)
23/10/13 21:08:39.43 Sy9RKGN20.net
>>355で結論が出ているよね。
365:デフォルトの名無しさん (ワッチョイ 7da7-bUcQ)
23/10/13 21:17:00.73 tgPT4vYj0.net
可変長かリストがどちらが便利かこっちを使えなんて話はしてない >>355
366:デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
23/10/13 21:21:31.49 e5Ke0Kb/a.net
組み込みのlistの時点でappendとextendが別れてるというのが全てだと思う
データを管理したいならappend(a)とappend(*a)が同時に使えるように書くべきじゃない
型チェックすれば済むとか、処理を把握してるから分かる、とか以前の問題で
どうしたらそういうコードを擁護しうるのかな……と思う
まあ苦手なものは仕方ないけどね
367:デフォルトの名無しさん (ワッチョイ 0154-Y2ua)
23/10/13 21:26:32.61 CVigb7Ut0.net
単体で渡してもリストで渡しても処理してくれる
というのは便利なので、よく作るけどな
自分で作ったのに仕様を覚えられない、という原因が大きいかもしれない
368:デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
23/10/13 21:30:41.15 e5Ke0Kb/a.net
そもそもPythonの関数定義が戻り値1つなら裸で2つなら長さ2のタプルとかいう設計だからね
可変長やアンパックがありがたい場面も当然ある
ただデータを管理するのにそんな書き方する必要は全くないって話
間違いなく不要
369:デフォルトの名無しさん (ワッチョイ 5aa5-8mGx)
23/10/13 21:39:09.86 fJskMopF0.net
同時に使えるように書くべきじゃないっていうが
append(*{})も普通に動くわけで
*を間違えてつけちゃった と 可変長として間違えました 結果、動いちゃいました
なんて前後でエラー処理する以外にチェックしようがないわけで
間違えた自体と関数分けるのとは話関係ないわな
appendとextendはまさに、可変長使わないなら関数名とアノテーション発生でってことでしょ
370:デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
23/10/13 21:45:01.00 e5Ke0Kb/a.net
>>366
少なくともPythonのlistでは引数1個以外のappendは動かないけど、Pythonじゃない言語を触ってるのかな
まあこの一例でも分かるように、1次元配列ですらバグらせる人はバグらせるんだから
インターフェイスはどんな人でも確実に使えるようにしといたほうがいいよ
371:デフォルトの名無しさん (ワッチョイ 8905-k2x6)
23/10/13 21:47:35.20 oLBZLdpr0.net
room.add_user(user) ←roomにuserをadd
room.add_users([]) ←roomにuser群リストをadd
list.append("a") ←リストに値をappend
list.extend([]) ←リストをリストによりextend
こうみるとわかりやすいな
関数名の情報量が全然違う
372:デフォルトの名無しさん (ワッチョイ ae5e-XtdT)
23/10/13 21:52:27.24 UzC3xoYA0.net
観点のちがいなだけでどれも同意できるけど
ひとりだけ変なのがおる
373:デフォルトの名無しさん (ワッチョイ 0154-Y2ua)
23/10/13 21:56:26.67 CVigb7Ut0.net
奇遇だな
俺も圏外から攻撃したいだけの変なのを検出してる
374:デフォルトの名無しさん (ワッチョイ 0a08-bgjR)
23/10/13 21:56:28.96 yy2kD+Fp0.net
引数1個以外のappendは動かないから何なんだ??>>367
だね、としか言いようがないが。
むしろだからこそ一行の*辞書も*リストも動いちゃうわけで
append,extendが同時に使えるように書くべきじゃない起因ではないし
かといってスター根絶ってわけでもないでしょ、ってことでしょ
375:デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
23/10/13 22:02:03.89 e5Ke0Kb/a.net
>>371
ごめん、「動いちゃうわけで」の部分が全く理解できないけどどういう意味?
[].append(*a)はaが長さ1の配列で無い限り動かないけど
長さ2でも3でも全部エラーだけど長さ1の配列に限って動くからそれだけはアンパックで書ければ便利って意味?
正気とは思えないな~
376:デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
23/10/13 22:14:15.69 e5Ke0Kb/a.net
仮に飛行機じゃないとした場合、一番よく使う組み込み型であるlistのappend/extendの仕様すらろくに理解してないで噛み付く人が複数いるスレってことになるが
まさかこのスレのレベルがそんな低いとは思わないから中点2つの・・使ってるアンパック大好きな人がなんか毎レス書き込む回線ブラウザ変えてることと結びつけそうになってしまうけどね
ツッコミどころあるコード乗せてツッコまれたら素直に受け入れたほうがいいよ
377:デフォルトの名無しさん (ワッチョイ 75e6-y8oP)
23/10/13 22:15:04.38 3PC3pmfU0.net
>>372
>append(a)とappend(*a)が同時に使えるように書くべきじゃない
上での>append(*a)
は>同時に使える、とのことから可変長引数へ渡すため
>*リストも動いちゃう
は、例えばappend(*["a"])とかで可変長引数のためではないでしょ
つまり可変長引数であろうがなかろうが>動いちゃうんだから
>同時に使えるように書くべきじゃない
が理由で >appendとextendが別れてるというのが全てだと思う
と断定するのは的外れ
378:デフォルトの名無しさん (ワッチョイ d533-Tqdi)
23/10/13 22:17:47.09 v2U3cWHO0.net
>長さ1の配列で無い限り動かないけど
動いててワロタ
379:デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
23/10/13 22:24:28.94 e5Ke0Kb/a.net
[].append(*[])
[].append(*[2,3,4])
これ動くかなぁ🤔
こんな明瞭な誤りに擁護がいっぱい付くって…😰
まあ間違い絶対認め�
380:轤黷ネいマンが暴れてるだけだろうけど 認められないならまずここで質問しなければいいのに
381:デフォルトの名無しさん (ワッチョイ 6eea-p61u)
23/10/13 22:28:03.09 4579Uo5r0.net
>これ動くかなぁ
アスペ?
それが許されるならappend(*a)でエラーでたぞ
append無いって言われたから
あーおそらくリストのappendでaも適当に与えておいて、でやっと動いたが
382:デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
23/10/13 22:30:25.92 e5Ke0Kb/a.net
>>374
そのレスがまさに「長さ2でも3でも全部エラーだけど長さ1の配列に限って動くからそれだけはアンパックで書ける」って意味じゃん
やっぱり正気とは思えないかな
それは位置引数1個の関数に引数1個渡してんだから動くよ
呼ぶ時にスターアンパック使ってるのが間違いなだけで
長さ2以上で動かないのにスターアンパックしてなんの意味が?
難しい文法は向いてないっぽいから無理しないほうがいいよ😅
383:デフォルトの名無しさん (ワッチョイ 7683-pfWt)
23/10/13 22:35:20.34 xOQDGR0o0.net
>>378
もしかしてまったく理解してないのきみのほうでは
仮に可変長引数のappendがあったとして、append(*a)で書きたくなければ無理して書かなくていいんだぞ?
故に*付けた付けなかったってのは
>appendとextendが別れてるというのが全てだと思う
まったく繋がってない 的外れ
384:デフォルトの名無しさん (ワッチョイ 850e-iLfk)
23/10/13 22:40:02.91 79uhgkd/0.net
リスト結合する時は+使うわ
385:デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
23/10/13 22:57:18.57 e5Ke0Kb/a.net
>>379
仮にとかじゃなくてlistのappendの話だからね
list.appendは可変長引数取らないから
日本語読めない&list.appendの仕様も知らないのに食い下がる度量は認めるよ
でもPythonは向いてないかも
386:デフォルトの名無しさん (ワッチョイ 09b2-o32V)
23/10/13 23:19:09.90 Ds5LqbN70.net
>>381
いや、老若男女だれがどうみても君自身が
>>363 >データを管理したいならappend(a)とappend(*a)が同時に使えるように書くべきじゃない
と、可変長引数を持った仮appendの話をし
>appendとextendが別れてるというのが全てだと思う
だから組み込みlistの(本家)appendがそんな仕様にはなっていないのだ
という論理展開をしている
可変長引数を持っていようがいまいが、*aは通るときは通る
という可能性をきみが失念して論理展開していたのは明らかです
387:デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
23/10/13 23:19:54.70 AHWiHfG4a.net
[].append(*{})は普通に動く、というレベルの認識の人が無闇に可変長引数使わないほうがいいのは間違いないかな
Guidoに習ってappendとextendで分けて引数は常に1個にしよう
388:デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
23/10/13 23:25:55.75 AHWiHfG4a.net
>>382
そもそも
add_user(user) ⇔ list.append
add_user(*users)⇔ list.extend
これらの比較の話として、同じメソッドに2通りに呼び出しを与えるべきでない、という文脈の話をしているので(しかもuserは自作クラス、usersは自作クラスのリストという制約がついているので混同しようがない)
そこで妙に食い下がっているのは単に君が議論を追えてないだけだよ
list.appendが可変長引数を取ると思っている君がねw
389:デフォルトの名無しさん (アウアウアー Sa7e-wavJ)
23/10/13 23:26:55.88 AHWiHfG4a.net
自作クラスのオブジェクト ね
390:デフォルトの名無しさん (ワッチョイ 0588-osJN)
23/10/13 23:36:32.04 sRXpRcqA0.net
>>383それがありなら>>377 単に君が動かない場合を想定してるだけで、動く辞書を想像できなかっただけ
単に省略で*{}と書いただけでまさに>>377
>>384
故に>>377前提である
>list.appendが可変長引数を取ると思っている
は成立しない
>、という文脈の話をしている
こちらもその文脈の話をしているし、していないとは一言も書いてない
文脈あろうがなかろうが
仮定した>append(a)とappend(*a)
によって君が
>同時に使えるように書 いちゃうと不都合だから
>appendとextendが別れてるというのが全て
という論理展開している事実は変わらない
391:デフォルトの名無しさん (ワッチョイ 5ae5-GWSq)
23/10/13 23:57:10.89 JzNLMdAt0.net
>appendとextendが別れてるというの は
>append(a)とappend(*a) のように >同時に使えるように書 けちゃうと不都合があるから >>363
可変長関係なく動く*aを失念してるわな どうみても
392:デフォルトの名無しさん (ワッチョイ eb7d-oXAT)
23/10/14 07:09:49.12 8MwVC+VG0.net
>>380
計算科学の世界とかなら話は別だけど、可読性を考えるとオペレーションでリストの処理を記述するのは微妙かも
393:デフォルトの名無しさん (スフッ Sd33-Kt/B)
23/10/14 14:06:37.16 tZ7gaNQAd.net
>>372-373
こいつな (クスマテ MM7e-RHqV)
>268
394:デフォルトの名無しさん (アウアウウー Sadd-f0fU)
23/10/14 16:44:20.26 x03gZ5vca.net
>>342
%%time は jupyter notebook 用だろ
python の文や式ではない
395:デフォルトの名無しさん (ワッチョイ d1e0-VGqS)
23/10/15 00:49:27.64 1GgH9uvV0.net
vim の外部Linux コマンド呼び出しみたいなものだろう
396:デフォルトの名無しさん (ワッチョイ 7bad-rPjP)
23/10/16 06:31:16.76 SmfSm8IF0.net
anacondaで入れてみたけど
普通に入れたほうが楽?
だとよけいに
397:デフォルトの名無しさん (ワッチョイ 7bad-rPjP)
23/10/16 06:31:27.47 SmfSm8IF0.net
vscodeだとよけいに
398:デフォルトの名無しさん
23/10/16 07:33:26.99 dwn5MUgM0.net
普通とは?
399:デフォルトの名無しさん
23/10/16 10:10:32.26 kgcCjrnKa.net
>>392-393
君のレベルなら Anaconda の方が無難
VSCodeはあきらめて
400:デフォルトの名無しさん (ワッチョイ 7b7b-LFwp)
23/10/17 00:02:40.60 IDqb6kdg0.net
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)
401:デフォルトの名無しさん
23/10/17 00:20:02.64 KXoPz/N40.net
まずはconfig.readの戻り値を確認
402:デフォルトの名無しさん (ワッチョイ 7bad-rPjP)
23/10/17 03:17:56.82 gqGJp+iF0.net
>>394
anacondaつかわずに
Pythonをインストールする
403:デフォルトの名無しさん
23/10/17 05:51:43.89 hOrq7F7ga.net
config.read("./config.ini")
404:デフォルトの名無しさん (ワッチョイ d9d3-VGqS)
23/10/17 09:39:25.08 IfpwnPMt0.net
config.iniの書き方なのでは
405:デフォルトの名無しさん (スフッ Sd33-LFwp)
23/10/17 13:58:02.86 W1mvng0kd.net
>>397,400
ありがとうございます。
返り値はNoneでした。
また、"./config.ini"やフォルダをつくって
"./config/config.ini"やフルパスも試しましたができませんでした。
何か環境構築が間違っている可能性があったりするのでしょうか?
GoogleColabではエラーなく実行できるのに・・・
(;´д`)
406:デフォルトの名無しさん (JP 0H25-Fhx2)
23/10/17 14:15:23.43 lA46vkBGH.net
GoogleColabではいくつかのモジュールが最初からインストールされている。
Vscodeでは必要なモジュールをpipでインストールする必要があるのでは?
407:デフォルトの名無しさん (アウアウウー Sadd-f0fU)
23/10/17 14:26:21.59 vCPpyEw2a.net
もしそうなら
import configparser
でエラー出てるはずだけどそこは出てないんだろ
408:デフォルトの名無しさん (アウアウウー Sadd-f0fU)
23/10/17 14:32:36.89 vCPpyEw2a.net
vscode 内の python から観て './' が実際はどこなのかを確認した方が良いな
print(os.path.abspath('./'))
print(os.path.abspath('.'))
409:デフォルトの名無しさん (ワッチョイ b332-jUDJ)
23/10/17 15:06:00.27 HxEc0Y/V0.net
>>396
そのコードのままだと
config.read(".\config.ini") はcolabでは読み込めなかったな
もしそのまま移植したって場合に
元はconfig.read("./config.ini")だったけど移植作業中に
".\config.ini"とか"絶対パス.\config.ini"になっちゃったとか?
410:デフォルトの名無しさん (ワッチョイ c901-RNWa)
23/10/17 15:06:09.46 T5fw5RAV0.net
>>396
そのコードのままだと
config.read(".\config.ini") はcolabでは読み込めなかったな
もしそのまま移植したって場合に
元はconfig.read("./config.ini")だったけど移植作業中に
".\config.ini"とか"絶対パス.\config.ini"になっちゃったとか?
411:デフォルトの名無しさん
23/10/17 15:22:55.43 IfpwnPMt0.net
カレントから読み出すコードは、実行方法や環境によってどこがカレントか変わるんだよな
設定は絶対パスで書くのが無難
412:デフォルトの名無しさん
23/10/17 15:25:40.98 lA46vkBGH.net
>>404
正確には
from pathlib import os
print(os.path.abspath('./'))
print(os.path.abspath('.'))
413:デフォルトの名無しさん
23/10/17 17:27:49.44 idEJG0se0.net
>>401
>返り値はNoneでした。
config.readはempty listは返すけどNoneは返さないんだわ
インタプリタかデバッガを使って変数の値を確認したり
コードをステップ実行する方法を先に覚えたほうがいいかもしれない
414:デフォルトの名無しさん (ワッチョイ d944-6Daa)
23/10/17 21:21:59.26 u48pYz2N0.net
>>408の書き方でもいいけど、
os.getcwd()という専用関数があるけどね
VSCodeはタスクランナーの設定でワーキングディレクトリ自由に設定できるからちゃんと設定しないとダメだよ
415:デフォルトの名無しさん (ワッチョイ 7b7b-LFwp)
23/10/17 22:16:02.73 IDqb6kdg0.net
>>409
返り値が良くわかっておらず、
サンプルコードみてこれかなぁ・・・
という物でしたので、申し訳ありません。
プログラムはあまり手を出したことがなくあまりわかっていない状況です。
また、本来の目的はTwitterの自動投稿BOTの作成でしたので、
コンフィグ読み込みではなくベタ書きして
ビルドしたところ、無事に投稿できたので、
コンフィグ読み込み部分問題かと思っております。
import configparser
config = configparser.ConfigParser()
config.read("./config.ini")
なにか問題があれば、教えて頂けないでしょうか。
416:デフォルトの名無しさん (ワッチョイ a910-Fhx2)
23/10/17 22:54:58.15 lA46vkBG0.net
ファイルの存在チェックを入れないと、ファイル読み込みでファイルが存在しなくてもその部分で特にエラーにならないようだ。
まずはファイルの存在チェックを入れてみては?
参考:このページの最初のプログラムは動いた。違いはencodingかな?
URLリンク(qiita.com)
417:デフォルトの名無しさん (ワッチョイ a910-Fhx2)
23/10/17 22:58:34.67 lA46vkBG0.net
あ、他に、ファイル名だけで指定するとデフォルトのフォルダが適用される。
./とかいらんだろ。
418:デフォルトの名無しさん (ワッチョイ a910-Fhx2)
23/10/17 23:10:27.55 lA46vkBG0.net
ちなみにPyinstallerでEXE化するのはGoogleColabでもできるらしいぞ。
419:デフォルトの名無しさん
23/10/18 08:47:33.24 PQ7Pmh1D0.net
>>411
絶対パスで指定してみたらどうでしょう。
420:デフォルトの名無しさん
23/10/18 08:56:15.85 wdlP5gm8r.net
>>411
>>408は試してないの?
421:デフォルトの名無しさん (ワッチョイ 7b7b-LFwp)
23/10/19 00:28:52.94 QaFrapAv0.net
>>397-416
ありがとうございます。
>>412さんの方法で無事にコンフィグ読み込みが出来ました。
また、Exe化も無事に成功しwindowsで起動も確認しました。
お付き合いいただき、ありがとうございました。
422:デフォルトの名無しさん (ワッチョイ 7154-bgYV)
23/10/19 09:37:09.09 Gku/AMr90.net
普通はファイルが無ければエラーにするべきだけど、
configは無ければデフォルトという動作も要求されるから微妙
423:デフォルトの名無しさん (ワッチョイ fb05-/4nw)
23/10/19 15:18:15.24 oX+KclHi0.net
PysinpleGUIの.FileBrowseで開くフォルダはどうにかして変えられんとですか?
424:デフォルトの名無しさん (ワッチョイ d156-LlTV)
23/10/19 16:22:02.82 tj/mFVfZ0.net
FileBrowse(initial_folder='...')
425:デフォルトの名無しさん (ワッチョイ dd2a-6qmC)
23/10/21 21:28:06.19 h0yPi2SA0.net
Python最近始めたのですがpy 〇〇.pyではちゃんと動いたスクリプトをpyinstallerでexe化したのですがexe化したものを実行してみるとErrorが出ます
スクリプトのときは仮想環境(Python3.3以降標準のvenv)で動かしていたのでその仮想環境内でpyinstallerでexe化しました
pyinstallerは仮想環境の中で実行すれば仮想環境のパッケージをすべてまとめてくれるのではないのですか?
それともそもそもpyinstaller自体がゴミカスでまともに.pyをexe化できないのですか?
以下のレスにプロンプトからの情報を貼ります
どこがエラー文なのかわかりません
426:デフォルトの名無しさん (ワッチョイ dd2a-6qmC)
23/10/21 21:28:47.37 h0yPi2SA0.net
2023-10-21 18:57:04.0020775 [W:onnxruntime:Default, onnxruntime_pybind_state.cc:1987 onnxruntime::python::CreateInferencePybindStateModule] Init provider bridge failed.
Traceback (most recent call last):
File "importlib\metadata\__init__.py", line 563, in from_name
StopIteration
During handling of the above exception, another exception occurred:
↓続きます
427:デフォルトの名無しさん (ワッチョイ dd2a-6qmC)
23/10/21 21:29:11.60 h0yPi2SA0.net
Traceback (most recent call last):
File "transformers\utils\versions.py", line 102, in require_version
File "importlib\metadata\__init__.py", line 1008, in version
File "importlib\metadata\__init__.py", line 981, in distribution
File "importlib\metadata\__init__.py", line 565, in from_name
importlib.metadata.PackageNotFoundError: No package metadata was found for tqdm
During handling of the above exception, another exception occurred:
↓続きます
428:デフォルトの名無しさん (ワッチョイ dd2a-6qmC)
23/10/21 21:29:38.85 h0yPi2SA0.net
Traceback (most recent call last):
File "diffusers\utils\import_utils.py", line 684, in _get_module
File "importlib\__init__.py", line 126, in import_module
File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "PyInstaller\loader\pyimod02_importers.py", line 391, in exec_module
File "diffusers\pipelines\stable_diffusion\pipeline_stable_diffusion.py", line 20, in <module>
File "PyInstaller\loader\pyimod02_importers.py", line 391, in exec_module
File "transformers\__init__.py", line 26, in <module>
File "PyInstaller\loader\pyimod02_importers.py", line 391, in exec_module
File "transformers\dependency_versions_check.py", line 57, in <module>
File "transformers\utils\versions.py", line 117, in require_version_core
File "transformers\utils\versions.py", line 104, in require_version
importlib.metadata.PackageNotFoundError: No package metadata was found for The 'tqdm>=4.27' distribution was not found and is required by this application.
Try: pip install transformers -U or pip install -e '.[dev]' if you're working with git main
↓続きます
429:デフォルトの名無しさん (ワッチョイ dd2a-6qmC)
23/10/21 21:30:05.41 h0yPi2SA0.net
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "onnxConverter.py", line 33, in <module>
File "<frozen importlib._bootstrap>", line 1229, in _handle_fromlist
File "diffusers\utils\import_utils.py", line 675, in __getattr__
File "diffusers\utils\import_utils.py", line 675, in __getattr__
File "diffusers\utils\import_utils.py", line 674, in __getattr__
File "diffusers\utils\import_utils.py", line 686, in _get_module
RuntimeError: Failed to import diffusers.pipelines.stable_diffusion.pipeline_stable_diffusion because of the following error (look up to see its traceback):
No package metadata was found for The 'tqdm>=4.27' distribution was not found and is required by this application.
Try: pip install transformers -U or pip install -e '.[dev]' if you're working with git main
[5820] Failed to execute script 'onnxConverter' due to unhandled exception!
終わりです
430:デフォルトの名無しさん (ワッチョイ 9946-5z4m)
23/10/21 22:23:26.42 9n8k9yEZ0.net
>>421
> どこがエラー文なのかわかりません
RuntimeError: からじゃないの。
431:デフォルトの名無しさん (ワッチョイ 9154-7Q4E)
23/10/21 22:59:56.07 DDgBRs4V0.net
大抵は一番上以外はどうでもいいんだよな
432:デフォルトの名無しさん (ワッチョイ dd2a-6qmC)
23/10/21 23:08:32.50 h0yPi2SA0.net
>>426
ありがとうございます
433:デフォルトの名無しさん (ワッチョイ dd2a-6qmC)
23/10/21 23:09:24.37 h0yPi2SA0.net
tqdmのメタデータがないって感じなのでしょうか
434:デフォルトの名無しさん (アウアウクー MMc5-gE6H)
23/10/22 01:28:21.12 EUQDeLnPM.net
自分を棚に上げてツールに文句言うゴミカス
435:デフォルトの名無しさん
23/10/22 04:53:10.13 HZnv6FtHM.net
マルチポストの馬鹿
436:デフォルトの名無しさん (テテンテンテン MMee-Komq)
23/10/22 06:41:22.07 nQ65Zno5M.net
何でexe化なんてことをするのか理解できない
Python入れて手実行じゃダメなんか
標準以外の実行方法を取るのはPythonの否定と冒涜だ
437:デフォルトの名無しさん (ワッチョイ dd2a-6qmC)
23/10/22 06:56:39.07 Agpi7r520.net
>>432
他人にPython入れるのを強要するほうが他人に対する冒涜だと思うのですが
438:デフォルトの名無しさん (ワッチョイ dd2a-6qmC)
23/10/22 07:00:36.37 Agpi7r520.net
>>430
一番聞きたいのは仮想環境内でpyinstaller使うと仮想環境内のパッケージすべて入りますよね?ってところなんですが…
まさかできないんですか?
本環境のパッケージが入ってくるとか?
今PCにごちゃごちゃ入れたくないので(Version管理も大変なので)本環境にはpipくらいしか入れてません
439:デフォルトの名無しさん (スップ Sd7a-Blpl)
23/10/22 10:18:34.02 hsNq0PHTd.net
>>434
pyinstaller 仮想環境でググることもしてないの?
440:デフォルトの名無しさん (ワッチョイ ce90-xUKY)
23/10/22 11:03:48.10 1hwURjPp0.net
思い通りにいかないとゴミカス扱いする輩には反応する必要なし
441:デフォルトの名無しさん (ワッチョイ 9154-7Q4E)
23/10/22 11:13:24.56 /wNoCoYT0.net
被害妄想のかたまりだな
442:デフォルトの名無しさん (ワッチョイ dd2a-6qmC)
23/10/22 11:51:05.33 Agpi7r520.net
>>435
そういうこと言うんですね
わかりましたもうききません
443:デフォルトの名無しさん (スップ Sd7a-Blpl)
23/10/22 12:06:29.73 hsNq0PHTd.net
>>438
ちゃんと情報収集してるのか聞いただけじゃん
なにヘソ曲げてんの?
444:デフォルトの名無しさん (ワッチョイ 5d01-gE6H)
23/10/22 13:24:24.73 QLmKzOHx0.net
もう聞かないって本人が言ってるんだしほっとけばいいじゃん
彼にはpyinstallerがコケること含めてあらゆる全てが自分への攻撃に感じるんだろう
445:デフォルトの名無しさん
23/10/22 22:15:21.64 N5qxvd050.net
PyPIにアップロードするんじゃなくても、pip installでインストールできるパッケージを作成する方法は学んで損はないと思う
446:デフォルトの名無しさん (ワッチョイ 9910-OCAv)
23/10/22 22:30:37.98 oSgNjv9Y0.net
def find_data_file(filename):
if getattr(sys, "frozen", False): # exe
datadir = os.path.dirname(sys.executable)
else:
datadir = os.path.dirname(__file__) # script
full_path = os.path.join(datadir, filename)
return os.path.normpath(full_path)
447:デフォルトの名無しさん (ワッチョイ 9910-OCAv)
23/10/22 22:50:39.51 oSgNjv9Y0.net
Pyinstallerでの問題回避のいくつか
--hidden-import オプションでPyInstallerが自動的に検出できないインポートを手動指定
--additional-hooksオプションでhook ファイルでの依存関係指定
specファイルでバイナリをビルドに含めるようにする
あと>>442
それからライブラリのバージョン
アップデートで解決するかもしれないし
ダウングレードで解決できるかもしれない
あとはPyinstallerをあきらめてNuitkaを使うか
Python embeddable
448:デフォルトの名無しさん
23/10/23 00:24:28.19 I4rSmsoT0.net
はじめからC++でやれば簡単なのに
449:デフォルトの名無しさん
23/10/23 00:34:04.07 F+bevqoz0.net
必要なpython環境を構築しちゃったほうが早かったりしてw
450:デフォルトの名無しさん
23/10/23 04:54:06.15 vn1oo3qwM.net
そもそもPythonを入れたくない/入れられないPCなら
exeを持ち込むこともできないはずなんだが
451:デフォルトの名無しさん (ワッチョイ dd2a-6qmC)
23/10/23 08:20:39.11 aHgroAah0.net
>>446
入れたくないではなく入れるのがめんどいってのが一般人の感想だと思うんだが
例えばphotoshopだのCubaseだのexeを入れれば起動できてそれでPythonを個別にインストールする必要がないわけじゃん
君たちはプログラマーだから別にいいんだが一般人が使おうとするとき〇〇を個別にインストールする必要がありますじゃ誰も使ってくれんのよ
452:デフォルトの名無しさん (スップ Sd7a-Blpl)
23/10/23 09:22:02.13 5zTmU8end.net
ゴミカス君まだいるじゃん
少しはググってみた?
453:デフォルトの名無しさん (スプッッ Sd7a-2fhy)
23/10/23 13:42:29.15 U8r3L/aFd.net
dllとかも面倒だもんな
でもそれなら、windowsならC#とか、androidならkotlinとか
言語を変えてしまった方がいいかも
454:デフォルトの名無しさん (ワッチョイ 1ae7-+PKl)
23/10/23 13:42:53.12 kClWNwaY0.net
ChatGPT に聞かない香具師は、使い物にならない!
人に聞く前に、ChatGPT・検索するのはマナー。
他人に、箸の上げ下ろしまで聞くものじゃない!
開発者は自走力。
細かい事まで、何でも隣の香具師に聞いてはならない!
これは会社の常識。
自分でやらない香具師には、誰も教えない
これが開発者
455:デフォルトの名無しさん (ワッチョイ 9154-7Q4E)
23/10/23 13:59:16.06 RLO04Gxh0.net
ランタイムとかもバージョンぐちゃぐちゃ
リリース時点は全て最新で問題なく動くんだけど、
そのうち怪しくなってくる
必要なもの全部入りでリリースするのが鉄板
456:デフォルトの名無しさん (ワッチョイ 8e74-fb7B)
23/10/23 14:19:59.17 CJYAK+hs0.net
MSがコンテナ動作するだけのミニマルなOSでWSLを初期導入しておいてくれれば
OS関係なくLinuxコンテナで配布できるのにな
457:デフォルトの名無しさん (アウアウウー Sa09-6i8i)
23/10/23 15:34:55.82 1Wk/iiy/a.net
exe化しても表面的なもので
結局python.dllは必要でサイズもデカいし
関連するモジュールも結局要るし
それなら普通にpython環境入れてるのと変わらないし
後者の方がずっと楽
どうしても嫌ならdockerとか箱庭でやれ
458:デフォルトの名無しさん (スップ Sd7a-Blpl)
23/10/23 15:51:37.62 1BaXlGhyd.net
>>453
>関連するモジュールも結局要るし
>それなら普通にpython環境入れてるのと変わらないし
>後者の方がずっと楽
exe化しても他にインストール必要なものがある前提どっから出てきたよ
459:デフォルトの名無しさん
23/10/23 16:12:09.16 1Wk/iiy/a.net
もう一つ言うと
pythonで造ったexeが一個ならそんなに問題にならなくても
もしそのアプリが好評でまた違うものをpythonでexe化したら
exe化するたびに無駄なサイズで増殖するんだろ
pythonの使い方を間違ってるよな
460:デフォルトの名無しさん
23/10/23 16:18:01.18 RLO04Gxh0.net
それが正解な気がするけどな
ツール一つごとに必要な環境全部入りでインストールする
各々が似たようなものを呼び出している
HDDもったいないから共通化しようぜ、という思いをぐっと堪える
461:デフォルトの名無しさん
23/10/23 16:26:34.31 1BaXlGhyd.net
>>455
その程度でユーザーの実行環境に関する手間やトラブルを回避できるなら御の字よ
462:デフォルトの名無しさん
23/10/23 17:04:01.26 afiA/f7c0.net
社内ならともかく一般ユーザーにPythonで作ったクライアントアプリを配布しようとするのが頭おかしい
463:デフォルトの名無しさん
23/10/23 17:33:23.61 F+bevqoz0.net
実行に限定したpythonランタイムがあると、
それ入れろで済むんだけどな
必要なモジュールはどうなるのかは問題だけど
464:デフォルトの名無しさん
23/10/23 18:11:40.25 X+bEqpUU0.net
今の時代exeサイズを気にするもんなのか
465:デフォルトの名無しさん (スップ Sd7a-Blpl)
23/10/23 18:32:45.73 1BaXlGhyd.net
自分の主張のためにexe化の欠点を無理やりひねり出してるんだろう
466:デフォルトの名無しさん
23/10/23 20:12:10.52 I6hV5An00.net
VLCのライブラリ使ったGUIツールexe化したら500MBくらいになってワロタ
467:デフォルトの名無しさん
23/10/23 20:22:10.10 RLO04Gxh0.net
androidのアプリだってくそでかapkに全部入ってて、
別途VBのランタイムのインストールが必要だったりしない
バージョンアップする時は全差し替え
判りやすくていい
468:デフォルトの名無しさん
23/10/23 21:48:20.27 sq2Mloc50.net
後で「なんか作ったexeがウイルス判定されるんですけど?」とか言い出すと思ってる
469:デフォルトの名無しさん (スップ Sd7a-Blpl)
23/10/23 22:03:39.38 1BaXlGhyd.net
もうただの言いがかりだな
470:デフォルトの名無しさん (ワッチョイ 9154-7Q4E)
23/10/23 22:18:51.31 RLO04Gxh0.net
考案したアルゴリズムの公表という点では要素のみの方が合理的だけど、
それを実際に使う側としては全部込みじゃないと落ちこぼれる人が出るという二律背反
471:デフォルトの名無しさん (ワントンキン MM8a-gIwh)
23/10/24 00:36:05.53 whni/swFM.net
>>464
ウイルス判定に悩まされるのはよくあることで
開発者なら誰しも経験あるだろ
Pythonだけでなく、C++やc#でも
472:デフォルトの名無しさん (ワッチョイ 9910-OCAv)
23/10/24 01:20:59.11 UF+GcpRf0.net
>>455
onefileオプションを使わずに作成して
複数のexeでdistディレクトリを共有する方法もある
>>446
Pythonに限らず開発環境全般は
やろうと思えばなんでもできるから許可が下りない
業務のためにマッチした特定の機能のソフトウェアは許可が下りる
というのはよくある
473:デフォルトの名無しさん (ワッチョイ ce05-xUKY)
23/10/24 13:45:14.02 LsvdxPow0.net
python のバージョンって、3.12.0ってのが出てるらしいけど、これにとっとと変えたほうがええの?
474:デフォルトの名無しさん (ワッチョイ 9154-7Q4E)
23/10/24 13:58:19.07 5goNV1KS0.net
自分は使わない機能でも、使ってるモジュールが使ってると、
pythonが古いからという理由でモジュールも古いままにされるので、
あんまり古いのを使い続けるのはデメリットがある
475:デフォルトの名無しさん (ワッチョイ 55ae-ANn9)
23/10/24 14:15:41.59 h9k+d5//0.net
その判断ができないなら、今使ってるPythonがeolじゃない限りは変えるメリットはない
476:デフォルトの名無しさん (ワッチョイ cdb1-3UYf)
23/10/24 15:40:01.70 Cc6poWtT0.net
文字列A、Bがあって、元の文字列とどっちが類似してるかの調べたかったんだけど
「自分で作るにはどうしたもんか。作るの大変そうだな。」って悩んでて、グーグル先生に聞いたらLevenshteinってパッケージを教えてくれた。
スゴイぞpython。
問題解決だねw
477:デフォルトの名無しさん (ワッチョイ 9154-7Q4E)
23/10/24 15:45:39.21 5goNV1KS0.net
画像の似てる似てないに関しても距離を定義して計算できる
478:デフォルトの名無しさん (ワッチョイ 9963-W2Yk)
23/10/24 16:35:56.44 chYaw+k50.net
>>469
Windows用の公式バイナリが提供されなくなったら次に乗り換えるようにしている
特殊なことをしない限り、それくらいで普通は十分
479:デフォルトの名無しさん (ワッチョイ d67b-awiV)
23/10/24 16:46:58.45 OIY4VRIG0.net
>>472
>Levenshtein
面白そうと思って検索したらもっと良さげなのがあった
>RapidFuzz
480:デフォルトの名無しさん
23/10/24 20:39:18.24 Glt/wbhT0.net
python をバージョンアップする際は
使っているライブラリの対応状況をググった方が良い
481:デフォルトの名無しさん
23/10/24 20:48:08.54 IwR1PZEy0.net
配布元いけばええのにググるんだ
482:デフォルトの名無しさん
23/10/24 22:09:01.76 UF+GcpRf0.net
競合のライブラリの方に詳しい情報があったりする
483:デフォルトの名無しさん
23/10/24 22:18:41.75 dsbQWtPA0.net
いまだに一個ずつ人間が目視でチェックしないといけない状況に疑問を持とう
484:デフォルトの名無しさん (テテンテンテン MMee-6kM7)
23/10/24 23:24:19.78 rXrUZylsM.net
生成AIのお陰で考える事がますます無くなったなぁ
活用出来るものだけが生き残るのかなぁ
と、言っても誰でも活用できるよなぁw
スッタクオボーフレーとかキターとかお役御免かもな
485:デフォルトの名無しさん (ワッチョイ 9154-7Q4E)
23/10/24 23:46:21.58 5goNV1KS0.net
生成系AIはすぐに行き詰まるよ
人間が既に作ったものの真似しかできないので、真似の精度が上がり切ったら終わり
486:デフォルトの名無しさん (ワッチョイ a549-f0DH)
23/10/25 12:27:08.15 ajj3vQHl0.net
君らは、Ruby のBundler、npm/yarn など、
プロジェクト内の依存モジュールの整合性をチェックしないのか?
君らは開発者じゃないだろw
exe 化については、Ruby on Rails 製のRedmine とかでも、exe化できるのかな?
Windows 用のインストール方法はあるけど
MSYS2, Rails, ImageMagick,
データベースはPostgreSQL など
487:デフォルトの名無しさん
23/10/26 01:09:28.92 A8ieLS5R0.net
pyautogui.press(key)において、OEM_3を入力させたいけどpythonでは対応してない?他にコードってあるの?
488:デフォルトの名無しさん
23/10/26 01:18:21.38 A8ieLS5R0.net
pyautoguiの資料を見ると「@」もしくは「`」の入力には対応してるみたいだけど出来ないなぁ
URLリンク(pyautogui.readthedocs.io)
489:デフォルトの名無しさん
23/10/26 01:31:00.09 A8ieLS5R0.net
エディタ上だとちゃんと反応してるけどブラウザ上では無理っぽい。求めてる挙動と違う
490:デフォルトの名無しさん (ワッチョイ 8ef5-fb7B)
23/10/26 08:20:18.04 ylE4orVc0.net
URLリンク(github.com)
491:デフォルトの名無しさん (ワッチョイ f93a-Pfhf)
23/10/26 08:50:54.81 rs0zBr0W0.net
>>476
恐ろしくてバージョンアップなんて出来ない
という訳でAnacondaに別環境をより新バージョンのpython入りで前環境のライブラリをファイルで読ませて入れていく
ryeだともっと簡単というがどうなんだろう
492:デフォルトの名無しさん (ワッチョイ ed5f-ANn9)
23/10/26 18:02:01.37 A8ieLS5R0.net
>>486
マジかぁ
pyautoguiの代わりに使えそうなpydirectinputもoem_3は送れないのでpythonの仕様っぽいのか
UWSCでは使えるのになんてこったい
493:デフォルトの名無しさん (ワッチョイ d689-fpqW)
23/10/26 18:39:57.46 WGT0kSWk0.net
こんだみたいに他人が作った環境なんて恐ろしくて使えんわ
494:デフォルトの名無しさん (スフッ Sd9a-JiYE)
23/10/26 19:26:31.99 ZcVI+/A3d.net
何をしにこのスレに来てるんだ?
心配なら機械語でイチから組めばいい
信頼性はピカイチだぞ
495:デフォルトの名無しさん (ワッチョイ cd68-6kM7)
23/10/27 07:10:55.34 95iydHFu0.net
なんに使うのか知らんが
pyautoguiが必要な状況に問題があると考えるべきで
496:デフォルトの名無しさん (テテンテンテン MMee-Komq)
23/10/27 07:33:51.20 p0bVtqbiM.net
みんなライブラリで楽しようとし過ぎだよね
ブラックボックスだから中を知らなくても使えるが
ひとたびハマれば無間地獄に陥るリスクを覚悟できていない人が多い
やはりプログラムはライブラリに頼らず自分でコツコツと作ってこそだよ
497:デフォルトの名無しさん (ワッチョイ 9154-7Q4E)
23/10/27 07:59:37.19 VEMgZlfJ0.net
pythonすら使わず、言語設�
498:vから自分でコツコツやるべき
499:デフォルトの名無しさん (ワッチョイ c1c6-Pfhf)
23/10/27 09:12:11.79 HdER+Kt30.net
重いconda
試練
500:デフォルトの名無しさん (ワッチョイ ce90-xUKY)
23/10/27 12:21:11.67 Tg/eVNRm0.net
ふるっ!
501:デフォルトの名無しさん (ワッチョイ f919-6kM7)
23/10/27 13:26:25.40 tmcCP2H+0.net
まぁ好んでconda使うヤツの気が知れん
502:デフォルトの名無しさん (ワッチョイ 610b-chvG)
23/10/28 13:34:13.06 QFK90jmU0.net
プロの開発者は、
日本人が作った、多言語バージョンマネージャーのanyenv を使う。
同様のツールに、asdf もある
Renv, crenv, denv, erlenv, exenv
goenv, hsenv, jenv, jlenv, luaenv
nodenv, phpenv, plenv, pyenv, rbenv
sbtenv, scalaenv, swiftenv, tfenv
他には、Docker を使う
各言語で、使い方がバラバラなバージョンマネージャーはややこしい。
Python はvenv、Ruby はrbenv、JS はn とか
503:デフォルトの名無しさん (ワッチョイ 4954-ybhY)
23/10/28 13:46:56.01 umtoXwly0.net
全部最新で問題なし
504:デフォルトの名無しさん
23/10/28 14:31:28.70 gVz4J4xYM.net
ライブラリりやツールをいろいろ入れてると
そのうちそれらの相性や設定の管理に要する手間が増えてきて
コードを書く時間が少なくなって詰む
505:デフォルトの名無しさん
23/10/28 15:27:38.08 kl2pZ05R0.net
>>492
ライブラリで楽したいって考える人が選ぶ言語がPythonだとおもうの
506:デフォルトの名無しさん
23/10/28 15:57:05.27 rtxFeUD30.net
>>492
ライブラリ作ってる人のが遥かに優秀だと思うw
507:デフォルトの名無しさん
23/10/28 19:05:48.03 DNCLCg0B0.net
>>500
でもpythonにだけ有って他の言語に無いライブラリって無いやん
類似や同等のものは最近の主要言語では存在するし
508:デフォルトの名無しさん
23/10/28 19:21:08.30 umtoXwly0.net
さすがpython、こんなもんまである
ということはよくあるけどな
509:デフォルトの名無しさん (ワッチョイ f37f-jgoi)
23/10/28 19:33:35.10 2CLqi+B00.net
Mojoにどれだけのライブラリ使えるようになるんだろうか
510:デフォルトの名無しさん (ワッチョイ 9b08-czOC)
23/10/28 20:52:21.49 G9+zV7us0.net
CPythonとABIも互換なんでしょ
ほぼ動くんちゃうかな
511:デフォルトの名無しさん (ワッチョイ 29d4-DD6R)
23/10/28 21:02:32.40 3CL4WWXh0.net
なんだかんだライブラリあるしpythonでGUIから作ってしまう…
512:デフォルトの名無しさん
23/10/29 17:29:52.83 yP8aR5sK0.net
現在、TwitterアナリティクスのJsonを
読みこもうとしていろいろ試行錯誤しています。
範囲の日時指定がエポックミリ秒だということは分かったので、
Time関数を使って、以下のようなモジュールを作りました。
import time
epoch_now = time.time()* 1000
epoch_yesterday = epoch_now - 60*60*24*8*1000
print (epoch_yesterday)
この場合、ステータスコードが500で帰ってきてしまい、
取得できるJson(account_stats.json)と取得できないJson(summary.json)が返ってきます。
そこで、取得できたJsonを見ると取得範囲のエポックミリ秒が
1697846400000~1698624000000
(2023 年 10 月 21 日 9:00:0000~2023 年 10 月 30 日 9:00:0000)
となっており、上記の値を突っ込むことでsummary.jsonも取得できました。
このような0時ちょうど(GMT+9)のエポックミリ秒を生成する手法は何かありますでしょうか?
切り上げも考えたのですが、どうもGMT+9でないと駄目なようです。
513:デフォルトの名無しさん
23/10/29 18:11:34.96 f808PyJm0.net
+9時間なんだからUTCって事やろ
基本から学んでこい
プログラム云々
514:じゃ無くて小学生の社会科で日付変更線習うやろ
515:デフォルトの名無しさん
23/10/29 18:34:57.27 bhsBnVvp0.net
>>507
from datetime import datetime
datetime(2023, 10, 21, 9).timestamp()
1697846400.0
516:デフォルトの名無しさん (ワッチョイ 9b7b-7bAz)
23/10/29 20:28:03.18 yP8aR5sK0.net
>>508
+9でJSTになっているのは理解していました。
書き方が悪く、伝わりにくくて申し訳ない
>>509
ありがとうございます。
この書き方だと、実行毎に日付の入れ直しがいりますよね・・?
こちらで強引に生成することで何とかなりそうです。
unix_start_time = datetime.datetime(year=1970, month=1, day=1, hour=0)
#今の日時取得
now_day = datetime.datetime.now()
#今日-1970/1/1 0:0:0の引き算
epoch_day = now_day - unix_start_time
now_epoch = epoch_day.days
#エポック秒計算
now_epoch_time = 60*60*24*now_epoch
また、Json形式でデータを引っ張ることに関してお聞きしたいのですが、
{
"html": ・・・・・(以下略)
"timeseries": {
"tweetviews": [
[ 1697846400000, 456 ],
[ 1697932800000, 466 ],
[ 1698451200000, 324 ]
],
}
のデータである場合、tweetviewsからうまくカンマ後の数字だけ引っ張ることは出来ますでしょうか?
print (json.dumps(data["timeseries"]["tweetviews"][-1], indent=4))
だと、[1698451200000,324]のような形で帰ってきてしまうので、324だけ抽出したいのですが・・・・
517:デフォルトの名無しさん (ワッチョイ 9beb-9em/)
23/10/29 21:03:20.54 1NQ6b9su0.net
エェェ・・・
518:デフォルトの名無しさん (ワッチョイ 29d4-dxLF)
23/10/29 21:25:12.23 DijUnBtx0.net
>>510
data["timeseries"]["tweetviews"][-1][-1]
519:デフォルトの名無しさん (ワッチョイ d1c5-FetF)
23/10/31 03:39:22.60 l7n6wkIv0.net
pycon炎上してんな
520:デフォルトの名無しさん (ワッチョイ 4954-ybhY)
23/10/31 09:35:31.31 FC+25GL80.net
import re
str = r'\path\file.ext'
m = re.search(r'\\(.+?)\.ext', str)
print(m.groups()[0])
とやると、
path\file
が表示される
期待してるのはfileだけなのに
\の扱いがよく判らん
521:デフォルトの名無しさん (アウアウクー MM5d-iMS1)
23/10/31 10:02:30.01 n8WLlcxzM.net
運営関係者がお気持ち表明してたけど
日本語下手くそか?って思った
522:デフォルトの名無しさん (ワッチョイ eb7b-QDRn)
23/10/31 11:07:11.92 xbZAg47A0.net
>>514
\というより正規表現自体の話だね。
m = re.search(r'([^\\]*?)\.ext', str)
例題のパターンなら俺ならre.split(r'[\\\.]',str)するかな
523:デフォルトの名無しさん
23/10/31 11:21:19.22 UwJuUdWI0.net
os.path.basename(os.path.splitext(str)[0])
のがポータビリティあるし具体的
ext縛りしたいなら os.path.splitext(str)[1] をみる
正規表現の学習中だったならスルーして
524:デフォルトの名無しさん (ワッチョイ 1b01-Nf2/)
23/10/31 11:45:54.34 9f9EtR6w0.net
pathlibのpath.stemで
linux上でwindows用のpathを処理したいとかじゃなければ
525:デフォルトの名無しさん (ワッチョイ 4954-ybhY)
23/10/31 12:08:29.70 FC+25GL80.net
現実の解はsplitしたけど
正規表現に\そのものって入れられないの?
526:デフォルトの名無しさん (スフッ Sd33-wFsA)
23/10/31 13:02:56.59 ZnsUTzemd.net
馬鹿には無理
527:デフォルトの名無しさん (ワッチョイ eb7b-QDRn)
23/10/31 13:10:09.60 xbZAg47A0.net
>>519
\が使えるから結果が表示されてる。正規表現の解釈が間違っているだけ
左から見ていくからre.search(r'\\(.+?)\.ext', str)だとpathも入る
re.search(r'([^\\]*?)\.ext', str)にすれば.extの直近の\以外の文字範囲になる
528:デフォルトの名無しさん (ワッチョイ 4954-ybhY)
23/10/31 13:13:43.57 FC+25GL80.net
.+? が一番短い候補を探してくれる機能は右にしか効かないんだっけ?
529:デフォルトの名無しさん
23/10/31 14:12:22.23 uMAo/1En0.net
\までをgreedyにマッチさせればいい
re.search(r’.*\\(.+?)\.ext', str)
'\foo.extention\file.ext’みたいなのがあっても困らない
530:デフォルトの名無しさん (ワッチョイ 4954-ybhY)
23/10/31 14:25:09.92 FC+25GL80.net
.* を足すだけで動いたんだな
右方向にしか探さないというルールを知らずによくこれまでやってこれたものだ
531:デフォルトの名無しさん (ワッチョイ f381-hdhi)
23/10/31 15:55:39.81 cJEQNzhb0.net
自分もこれ最短一致でいけると思ってた
532:デフォルトの名無しさん
23/10/31 18:39:41.68 Vsa18tIj0.net
正規表現できるってマジスゲ
533:デフォルトの名無しさん
23/10/31 19:01:40.80 hfhrZUTs0.net
覚えても使う機会がほとんどないからすぐに使い方を忘れる技術筆頭
534:デフォルトの名無しさん
23/10/31 19:10:21.32 UOgpZEfIM.net
普通コンピューター使ってたら検索するだろう
使う機会の問題じゃなくリテラシの問題なんじゃないの
535:デフォルトの名無しさん (ワッチョイ 136d-st1D)
23/10/31 20:39:25.02 XhCHDiQs0.net
最近はAIに作らせてる
536:デフォルトの名無しさん (オッペケ Srdd-hdhi)
23/10/31 21:23:14.85 AUqnNKgAr.net
普通に考えて使う機会が増えれば使い方を忘れることは減るだろう
537:デフォルトの名無しさん (テテンテンテン MM8b-7Hus)
23/10/31 21:26:59.61 v/vfxNC4M.net
機会があって使いどころを解ってないってのがリテラシ低いヤツ
機会がないわけじゃない
538:デフォルトの名無しさん (ワッチョイ 4954-ybhY)
23/10/31 21:40:49.77 FC+25GL80.net
pythonは正規表現を極力使うなという設計が見え隠れするけどな
startswithとかendswithとかstripとかでかなりの正規表現は使わなくて済む
一番ありそうなスクレイピングはbs4で何とかする
そうすると特殊な文字列解析をしないといけないケースは限られてきて、
適当なモジュールに追い出せば普段書くコードにimport reは不要になる
539:デフォルトの名無しさん
23/10/31 22:25:00.17 hSvVaef5r.net
使う機会の多い少ないなんか人それぞれだろうにそれをどうしてリテラシの問題にしたがるのか謎
540:デフォルトの名無しさん
23/10/31 23:40:18.15 nyF8SqcQ0.net
この業界そういう連中ばっかなのは今に始まったことじゃないでしょ
541:デフォルトの名無しさん
23/11/01 00:00:54.33 hFPjhJnyM.net
>>532
正規表現は極力使わないのが賢明だね
本番データで想定外のマッチングをして大事故につながるリスクを常にはらんでいる
542:デフォルトの名無しさん
23/11/01 16:47:42.46 7xIgv3ci0.net
PyCon APACでDNSクエリを公開する
@mipsparcがそれを指摘する
運営が謝罪
URLリンク(pyconjp.blogspot.com)
何でこれ炎上した上に指摘した人間がツイ消しまでしてんの
543:デフォルトの名無しさん
23/11/01 17:38:35.61 7xIgv3ci0.net
URLリンク(nukalumix.hateblo.jp)
通信の秘密について解説してるブログ
544:デフォルトの名無しさん
23/11/01 18:46:55.26 SK5NEpr2a.net
>>536
そいつが騒ぎ立てて目立とうとしただけだろ
ただ目立つことが目的だから訴訟とかややこしいことになる前に消したのだろう
545:デフォルトの名無しさん
23/11/02 08:38:38.80 8JdTnQ430.net
犯罪を指摘した人に対して訴訟とか言い出すやつは頭おかしいよ
意図的な漏洩なので刑事罰事案
546:デフォルトの名無しさん
23/11/02 10:36:45.79 VbnyJw9p0.net
きっかけとなった投稿みつかった
URLリンク(twitter.com)
>>538
一人が騒ぎ立ててあそこまで炎上させられるのなら、それはそれですごい
(deleted an unsolicited ad)
547:デフォルトの名無しさん
23/11/02 10:43:13.74 VbnyJw9p0.net
というか、投降者の炎上体質は否定しないけど、それ以外にも要素があった?
548:デフォルトの名無しさん
23/11/02 12:30:17.43 obP8ILkg0.net
>>540
いや1人だぞ
そいつに釣られて色んな奴らが反応したせいでここまでおかしくなったのよ
ネットあるあるだ
みんなで無視しとけばよかった
549:デフォルトの名無しさん
23/11/02 12:41:38.15 +5aa8DEY0.net
これを無視はないでしょ
運営へすぐ連絡してくれる味方が少なかったのが敗因
550:デフォルトの名無しさん
23/11/02 12:57:36.33 rfHazXJX0.net
ほーん?
味方が少なかった時点で色々と察してしまうなぁ
551:デフォルトの名無しさん
23/11/02 13:23:22.21 obP8ILkg0.net
PyConってコミュニティっていう感じじゃないのよね
会社に近い
日本で唯一めちゃくちゃ儲かってるし
組織的にやってる
だから対応も組織的になってる
こういう「無敵の人」が暴れた時に弱いよね
552:デフォルトの名無しさん (ワッチョイ b1f3-zW/F)
23/11/02 13:47:53.28 VbnyJw9p0.net
>>542
無視はやべーだろ
>>543
もうツイート消してるからはっきりとわからんけど、運営にも自分で伝えてたみたいな事言ってなかったっけ
553:デフォルトの名無しさん (ワッチョイ b1f3-zW/F)
23/11/02 14:04:28.39 VbnyJw9p0.net
PyCon APAC 2023におけるNOCコンテンツに関するご指摘について
URLリンク(pyconjp.blogspot.com)
発表きたな
554:デフォルトの名無しさん (アウアウウー Sad5-6ZD3)
23/11/02 14:04:44.14 opKyr2X/a.net
無視でいい
少なくとも外野は
運営が気が付かない訳ないんだからな
555:デフォルトの名無しさん
23/11/02 14:26:36.15 VbnyJw9p0.net
>>548
>前日の機構変更により、サブドメインを除いたドメイン名のみ表示に変更
指摘されてすぐ行った対応がこれで、明らかに通信の秘密の侵害を認識できてないから
今回外野が騒なかったらこの対応のまま行ってたと思う
556:デフォルトの名無しさん
23/11/02 14:52:54.35 opKyr2X/a.net
>>549
通信の秘密の侵害になるか?ははっきり言えないと思われ
弁護士の見解もはっきりしてないし実際は裁判しないと決着がつかない部類のものだよ
特に今回のようなケースはね
外野が騒ぎ立てなければここまでプチ炎上することもなかったのだ
557:デフォルトの名無しさん (ワッチョイ 137e-hdhi)
23/11/02 15:25:23.77 vtDg34mi0.net
>>545
>同様に、本件について問題提起をくださったコミュニティの皆様への個人攻撃・誹謗中傷等
>またはこれに類する行為もお控えいただければ幸いです。
だってさ
558:デフォルトの名無しさん (ワッチョイ d16a-ooUb)
23/11/02 16:40:41.85 ORpvM4EQ0.net
>通信の秘密の侵害になるか?ははっきり言えないと思われ
争いの余地なく明らかな侵害
これで侵害してないとかいいだしたら法律いらない
争えるのは刑事罰の対象者と程度くらい
いい弁護士が見つかるといいね
559:デフォルトの名無しさん (ワッチョイ 11f0-6ZD3)
23/11/02 16:42:58.23 obP8ILkg0.net
>>552
君は弁護士?
弁護士じゃないなら偉そうに断定しない方が良いよ
素人なんだから
560:デフォルトの名無しさん (ワッチョイ d16a-ooUb)
23/11/02 16:56:15.37 ORpvM4EQ0.net
脊髄反射ww
よほど都合が悪いんだね
前科付くことになるから仕方ないのかもしれないけど下手な沈静化図ろうとすると逆効果だよ
これ今は警察も見て見ぬふりして動かないかもしれないけどあんまりいい加減なこと言ってると告訴する人出てくるよ
561:デフォルトの名無しさん (ワッチョイ b1f3-zW/F)
23/11/02 17:26:31.97 VbnyJw9p0.net
さすがにここで通信の秘密について議論するつもりはないわ
562:デフォルトの名無しさん (ワッチョイ eb89-mMeg)
23/11/02 18:16:27.99 DKOWPN540.net
議論したところでなんの生産性もない話題(裁判所の匙加減しだいなので、俺たちに介入する余地は無く無意味なのでは)
563:デフォルトの名無しさん (ワッチョイ 137e-hdhi)
23/11/02 18:49:26.57 vtDg34mi0.net
運営が>>547で
「電気通信事業者法または憲法が定める通信の秘密の侵害に当たり得る行為だと考えます。」
「少なくとも不適切な行為であったと考えます。」
等々と表明してるんだから話はもう終わってる
564:デフォルトの名無しさん (ワッチョイ b1f3-zW/F)
23/11/02 20:02:16.98 VbnyJw9p0.net
URLリンク(www.youtube.com)
PyCon JP TV #34: PyCon APAC 2023振り返り
触れるかな
565:デフォルトの名無しさん
23/11/02 22:29:18.46 DVTQzfgC0.net
Pythonの言語の学習におすすめのサイトはありますか?
リファレンス的に使えるHP や ライブラリの使い方のHP
ググれば出ますが、おすすめあれば教えてください。
566:デフォルトの名無しさん
23/11/02 22:35:51.46 Z5mhCUTh0.net
運営に争う姿勢がないから略式起訴で裁判にはならない
あとは警察検察の匙加減
罪を認めてるんなら自首したほうが量刑は軽くなるが誰が自首すべきか判断が難しいところ
責任者一人の首を差し出してもスタッフ全員守れるとは限らないからね
567:デフォルトの名無しさん (アウアウウー Sad5-g+2W)
23/11/03 08:10:17.46 rVBPlXQLa.net
つまりここで騒げば騒ぐほど5chの行く末が危うくなると
だから無視しろと?
568:デフォルトの名無しさん (ワッチョイ 295a-9em/)
23/11/03 12:01:30.37 pvnUPuXN0.net
>>547でDNSクエリを晒した動機に触れてなかったり担当がボランティアだと強調してるあたりに批判を和らげたい意図を感じる
それにコメントに書かれてるようにイベント開始前に指摘があったことや運営関係者が告発者を攻撃していたことが事実なら不法行為に対する償いとは別に組織としての謝罪と処分が必要だろう
569:デフォルトの名無しさん (ワッチョイ 1346-eG5z)
23/11/03 14:13:34.80 135shnGH0.net
>>559
docs.python.org/ja/3/tutorial/index.html
570:デフォルトの名無しさん
23/11/05 02:01:03.25 SrPBWcHK0.net
初めてPython触る
VS2022に環境整えたんだけどGUIアプリ作ろうとしても新しいプロジェクトに出てこないんだけどVS2022では作れないってこと?
571:デフォルトの名無しさん
23/11/05 02:32:06.16 WVQonGtV0.net
URLリンク(learn.microsoft.com)
雛形は用意されてない模様
Python用のGUIライブラリを自分で選定して構築する必要がある
ネイティブアプリ書けないから当然なんだけどもVSである必要がほぼないね
572:デフォルトの名無しさん (ワッチョイ 31a7-lNqW)
23/11/05 04:19:08.15 nQmmBj7n0.net
tkinterはネイティブじゃないか?
573:デフォルトの名無しさん (ワッチョイ 4690-0SSA)
23/11/05 06:39:11.16 GNbgJagA0.net
>>564
GUIアプリはPythonでも作成ができますが、C#とかで作成した方がいいと思いますよ。
仕事でPythonを使用することが要件であれば仕方ありませんが。(そもそも、そんな要件を出す人はあんまりいないと思うし)
PythonはPythonが得意としていることに使用するのをお勧めします。
574:デフォルトの名無しさん (ワッチョイ 1949-MfmC)
23/11/05 07:47:07.85 ixjDKXsm0.net
C#はGUI作成なら一番か
Javaも悪くはない
JavascriptのElectronという手もあるがかさ張る
RustのTauriは良さげだがRustの学習コストが高い
VC++のほうがマシかもな
575:デフォルトの名無しさん
23/11/05 10:19:39.87 ol9bMVcca.net
wxPython覚えるとwxWidgetsも使えるようになって
お得ですよ
576:デフォルトの名無しさん
23/11/05 10:25:35.56 RWNjRicl0.net
コンソールから何か打ち込んで1行ずつ実行とかやったことないし、
どうせ長いスクリプト書いてる最中に活用なんかできないんだから、
初心者の最初のステップや解説サイト書く人が助かるだけ
そんなの不可能な代わりにコンパイル言語で高速な方が有り難い
577:デフォルトの名無しさん
23/11/05 11:59:21.94 LMwCZi3CM.net
各々最適があるのだから
好きにすれば良い
押し付けがしく言う必要はない
578:デフォルトの名無しさん
23/11/05 16:32:32.19 NcRV8IfI0.net
Python/Qtで問題ない。
579:デフォルトの名無しさん (ワッチョイ 6dd4-ZTan)
23/11/05 19:35:21.75 i4+JFogG0.net
PySideでやってるな
触ってる人すくなそうだけどQtQuickの方も触りだした
580:デフォルトの名無しさん
23/11/06 09:12:57.41 tszvNtiA0.net
jpgファイルをドラッグアンドドロップしたら
処理するってつくりたいんだけど
winだとコマンドプロンプト経由じゃないとダメ?
PYファイルじゃむり?
581:デフォルトの名無しさん
23/11/06 10:15:00.39 48qtdwXca.net
python(。えxぇ)じゃなくて
pythonw(。えxぇ)の方を使う
582:デフォルトの名無しさん (ワッチョイ 2e89-cBWW)
23/11/06 15:06:07.26 IA199WY/0.net
ちんこ痒いの病気かもしれん
583:デフォルトの名無しさん (ワッチョイ e95f-ZTan)
23/11/08 12:54:07.78 EPzAmPS60.net
Pythonは対話型で学習しやすいのでPythonを学ぶというよりはプログラム初学に向いてる
コンパイルせず即実行できるのが便利なだけ…かな
京都大学では1回生の学生向けにプログラムの授業を行ってるが
X=X+1を方程式と勘違いしてこの方程式は間違ってるとかどうやって解くの?という学生が多い
プログラムでは変数として使うという風に説明する。Pythonならたった数行だけでどういうものかわかるのでやはり初学者向けといえる
584:デフォルトの名無しさん (ワッチョイ c551-ZTan)
23/11/08 13:26:28.57 82yhyslz0.net
=を本来の意味と違う意味で使ってるんだからそりゃ間違ってると思うわな
プログラム言語作ったやつが悪い
585:デフォルトの名無しさん
23/11/08 13:31:21.96 M+eAhKpj0.net
lispのように
(set a 3)
の方がよかったか?
586:デフォルトの名無しさん
23/11/08 13:35:14.32 o1wz1QuQa.net
CS知ってればそんな勘違いするはずないんだけどな
数式をメタファーとして用いてるが関数型言語でもない言語は数学とは全く違うってことが理解できてない
CSは中学生から必要
587:デフォルトの名無しさん (ワッチョイ 4910-ZTan)
23/11/08 15:55:32.78 0RzzgATi0.net
>>577
その話題のおかげで久しぶりにPythonを触ってみようという気になった。
例えば2^16倍精度浮動小数点数の最大値を計算するのに、Python3のDecimalではEmaxを最大にしても桁あふれするが、
Mpmathを使う以外にもPython2のDecimalが使える。
そのDecimalの書き方でもともとやっていた書き方よりも短く工夫できた。
588:デフォルトの名無しさん
23/11/08 17:45:04.49 EFPFqmm90.net
Incoぽ?ち
589:デフォルトの名無しさん
23/11/08 22:59:11.98 EduYhT2N0.net
>>574
Ruby で説明すると、
デスクトップにショートカットを作って、
例えば、コマンドプロンプトでRubyを起動するなら、リンク先を以下のように設定する
C:\Windows\System32\cmd@exe /k "ruby C:/Users/Owner/Documents/a.rb"
ただし、@はドットに変えて下さい
コマンドプロンプトを経由しない場合は、
直接Rubyの実行ファイルがある絶対パスを書く
C:\Ruby25-x64\bin\ruby.exe C:/Users/Owner/Documents/a.rb
これで、Drag & Drop したファイルパスが、
a.rb の中で、ARGV[ 0 ] に入ってくる
590:デフォルトの名無しさん
23/11/08 23:01:59.61 rOfRZ5Bf0.net
Goだと?
591:デフォルトの名無しさん
23/11/08 23:05:05.88 hH3k8goZ0.net
関連?スレか
「京大生でもx=x+1が分からない」、喜多教授が明かすPython教育の実態 ★3 [少考さん★]
スレリンク(newsplus板)
592:デフォルトの名無しさん
23/11/08 23:10:06.00 rOfRZ5Bf0.net
=を等しいという意味だとしても、1+1=2を無批判に受け入れるのはおかしい
1+1=1+1は正しい
1+1と2は明らかに違うもの
593:デフォルトの名無しさん
23/11/08 23:26:13.31 HvIjZsS8d.net
Python世界だともう少しややこしく
確か256以下は同じになるんじゃなかった?
2=1+1は正しい
2000=1000+1000は間違い
とかなんとか
594:デフォルトの名無しさん
23/11/08 23:29:18.59 lU2++3tG0.net
やはりPythonでも代入は:=にすべきだったな
595:デフォルトの名無しさん (オイコラミネオ MM75-H91/)
23/11/09 05:37:23.81 u7A0OM5bM.net
>>574
送るからも余裕
argparseが役に立った
596:デフォルトの名無しさん (オイコラミネオ MM75-H91/)
23/11/09 05:40:30.95 u7A0OM5bM.net
>>585
分からないんじゃなくて知らないだけだな
597:デフォルトの名無しさん
23/11/09 07:11:40.89 i4b+P9OO0.net
=使わずに:=だけ使っても書ける?
598:デフォルトの名無しさん
23/11/09 07:14:51.81 i4b+P9OO0.net
書けないな
ifの中に無いとSyntaxErrorになる
ifの中にあっても無くてもよくて代入結果が評価可能になるだけ、という演算子でも良かったのに
599:デフォルトの名無しさん
23/11/09 10:07:00.20 Wk14M+OK0.net
>>586
そんなもん文脈次第であって何も注釈がなければ式の値で比較するのが普通だろうよ