Pythonのお勉強 Part69at TECH
Pythonのお勉強 Part69 - 暇つぶし2ch2:デフォルトの名無しさん
22/11/24 22:06:48.23 A6xfpKBe0.net
何か最後に?ついてるんやけど

3:デフォルトの名無しさん
22/11/25 00:11:23.76 2/ccX3XOa.net
>>1
O₂🍛

4:デフォルトの名無しさん
22/11/25 12:28:38.81 PV2ZG9bua.net
スレ埋めるだけの簡単なお仕事です

5:デフォルトの名無しさん
22/11/25 13:32:24.92 KAp4t6I3M.net
スコップ一本さらしにまいて♪

6:デフォルトの名無しさん
22/11/25 20:28:02.56 Ex0f5l5+M.net
今日もNullpoを葬る~♪

7:デフォルトの名無しさん
22/11/27 22:00:34.60 6go5tzEb0.net
LSTMで全部で1000あるデータの、1001期目の予測値を得るにはどうすれば良いですか
どのサイトを見ても検証期間中の予測値は得られても、それより先の予測を得る手段がいまいち分かりません

8:デフォルトの名無しさん
22/11/27 22:12:17.80 7lw/d0vw0.net
「そんな先のことは分からない」

9:デフォルトの名無しさん
22/11/27 22:35:08.90 6go5tzEb0.net
無事解決しました

10:デフォルトの名無しさん
22/11/28 10:29:47.82 kuSQgmzBa.net
テンプレのrubyでは~に時代を感じるな

11:デフォルトの名無しさん
22/11/28 12:15:33.61 2MZJX1kl0.net
Twitterのエゴサをpythonでできないかなと思って
seleniumでやってみたけど画面上は表示されてるのに
ソースには「JavaScriptを使用できません。」と出る
どうすりゃいいんや…

12:デフォルトの名無しさん
22/11/28 13:04:31.73 QxjFh41D0.net
>>11
せめて日本語が読めるようになってから手を出せ。あほ

13:デフォルトの名無しさん
22/11/28 15:59:10.98 2MZJX1kl0.net
実行して立ち上がったブラウザではTwitterが表示されている
つまりJavaScriptは実行されている
にもかかわらずpython内では実行されていないソースコードが表示される
JavaScriptが実行された後のソースコードを取得するにはどうするといいでしょうか?

14:デフォルトの名無しさん
22/11/28 19:04:45.26 v7hHcTqw0.net
webdriverのインスタンスを作るときにjavascriptをenableにしてないとか
ページの生成が終わるのを待たずにhtml読んでしまっているとか

15:デフォルトの名無しさん
22/11/28 20:47:02.50 2MZJX1kl0.net
>>14
ありがとうございます。
オプションに「options.add_argument('--enable-javascript')」を追加したり
time.sleep(15)も追加しましたが駄目でした。

16:デフォルトの名無しさん
22/11/28 21:06:19.85 2MZJX1kl0.net
JavaScriptが反映されていないのが原因だと思うので
そのあたりをもう少し調べてみます。

17:デフォルトの名無しさん
22/11/28 21:07:26.37 cGJ8oXTgM.net
URLリンク(self-development.info)
ここ読んだけどtwitter側が対策してるっぽいね
APIを使えって事じゃない

18:デフォルトの名無しさん
22/11/28 21:26:56.65 6X8/W5dUa.net
ソース出さないで言ってもわからんぞ

19:デフォルトの名無しさん
22/11/28 22:48:45.25 g0wreZ1J0.net
こういうの見て思うんだけど、スクレイピングの参考書ってAPIへの誘導ってないの?
プログラミングもWebの知識もない人間にスクレイピングだけでやらせようとするのってだいぶ罪深いと思う
それに、Webの勉強するのにスクレイピングやブラウザでアクセスしながらって相当な悪手だろ
普通簡単なWebサイト作りながらとか構築する側の立場で進めた方が効率いいし、それでもボリューム的に片手間で済むようなもんでもないでしょ

20:デフォルトの名無しさん
22/11/28 22:54:19.81 TOwN4nTg0.net
そういう参考書を作ってあげて

21:デフォルトの名無しさん
22/11/28 22:59:12.17 LDNjf6uN0.net
Webプログラミングと言えば
情報を発信するか集めるか、まあどっちかだしな

22:デフォルトの名無しさん
22/11/28 23:02:43.25 v7hHcTqw0.net
>>19
全くもっておっしゃるとおりだと思うけど、静的なサイトだとBeautifulsoupとかで見よう見まねでできちゃったりするから素人さんにもキャッチーなのよね
http通信とは?とかWebサーバーの仕組みとは?から入ると素人は力尽きちゃう

23:デフォルトの名無しさん
22/11/29 01:26:48.72 wVUySIDy0.net
>>19
APIはAPIで辛くない?認証不要APIとかだったらいいけど、大体お作法を調べるのに時間かかる。
スクレイピングは、HTML/CSSやったことあるならわかる感じがする。RPAみたいなものかなと。
いや逆にRPAこそGUIの知識いるしAPI整備してもらってやったらいいじゃんと思うんだけど、API整備の予算が付かないんだろうね…

24:デフォルトの名無しさん
22/11/29 01:43:32.73 fkaofXgI0.net
スクレイピングって、ウェブブラウザの振る舞いを模倣すればいいのと違うん?

25:デフォルトの名無しさん
22/11/29 07:37:52.82 NO7HG1hV0.net
>>24
今どきのブラウザは巨大アプリの筆頭みたいなもんなので簡単にエミュレートできないのさ
なのでjavascriptで自分を書き換えたりするサイトをスクレイピングするにはブラウザそのものを立ち上げて外部からブラウザに今どう表示してんのと聞くほうがいいわけ、それがSeleniumという仕組み

26:デフォルトの名無しさん
22/11/29 08:28:45.05 rvct1gbBM.net
カールで取るかAPIでとった方が早いだろ

27:デフォルトの名無しさん
22/11/29 10:28:54.87 Zdiz5UrS0.net
アホがいきなり動的生成サイトにwhile無限アタックをしかけるまである
悪いのは無責任な企業系入門サイトと、ライブラリ豊富なpython

28:デフォルトの名無しさん
22/11/29 10:35:59.05 oFH75lpf0.net
>>25
おまけにブラウザごとに挙動が大きく変わるから、ややこしい!

29:デフォルトの名無しさん
22/11/29 11:42:39.57 JTTSm0Nf0.net
初級者がスクレイピングやるなら、先にネット倫理から勉強してほしいところ

30:デフォルトの名無しさん
22/11/29 12:06:36.59 oHPPEt2oM.net
初級者が考えるような事は調べりゃ出てくる
初級者は検索して自己解決に導けないならあきらめた方が良い

31:デフォルトの名無しさん
22/11/29 12:12:16.73 OkL5Yz/20.net
Twitterなら、API利用から始めると楽だと思う

32:デフォルトの名無しさん
22/11/29 12:12:24.76 fkaofXgI0.net
>>25
単純化すると
ウェブブラウザみたいに、サイト開いてAPI叩いてデータ(JSONが主流になったね)拾って、
これをパースして個別データとして取り込んで、ってことだよね
これってウェブブラウザの振る舞いを模倣していることにならないのかな?

33:デフォルトの名無しさん
22/11/29 12:12:37.05 Rlb9t/Eq0.net
たいてい、スクレイピングの本には、図書館へスクレイピングして、
サーバーを落とした香具師が、業務妨害で逮捕された事件も書いてある。
だから必ず、契約してAPI を使うように書いてある
あくまで練習用に、自分のPC 内のウェブサーバーへアクセスして試すべき。
VSCode の拡張機能・Live Server で、簡単にサーバーを起動できる
そこに対して、curl, wget, Selenium Webdriver などで試す
基本的に、ほとんどのサイトは、5ch みたいに先にHTML を送っておいて、
その中で、Ajax(JavaScript)によって内容をサーバーへ取りに行くので、
Selenium で実際のブラウザを使って、wait しないと内容を取れないはず

34:デフォルトの名無しさん
22/11/29 12:24:13.36 OkL5Yz/20.net
>>33
落としたことにされた人には、図書館も開発元の三菱情報システムも、謝罪しているけどね

35:33
22/11/29 12:26:22.23 Rlb9t/Eq0.net
山浦 清透
【作業工程フル公開】エンジニアが30万円案件の制作過程を公開
www.youtube.com/watch?v=tYbVl6N8oxI
これは、PHP だけど、
Udemy の山浦ぐらいの相当プロでも、1:5:42 の所で、
マイナビ求人をスクレイピング攻撃しているだろw
プロでも間違うから、なおさら素人なら、無限ループで攻撃し放題。
業務妨害で逮捕されるだけ
データベースに保存するなら、普通はPHPじゃなくて、Ruby on Rails を使う

36:デフォルトの名無しさん
22/11/29 12:29:52.96 OkL5Yz/20.net
ウィキペディアにも経緯が詳しく書かれているから見るといい
URLリンク(ja.wikipedia.org)岡崎市立中央図書館事件

37:デフォルトの名無しさん
22/11/29 12:31:54.18 HCCm6VNmr.net
サーバーを落とした香具師!

38:デフォルトの名無しさん
22/11/29 12:35:46.90 5xrJvc530.net
このような場合はJPCERT/CCに相談して欲しかった

39:デフォルトの名無しさん
22/11/29 12:58:16.32 OkL5Yz/20.net
この障害は岡崎だけでなく、全国の図書館でも発生していたそうだ
朝一でサーバー再起動が業務となっていたところもあるそうだ
悪質なのは、この障害、原因を開発元が承知していたことと、
システム更新(もちろん有料)の口実にされていたこと
ハードの買換をさせられた図書館もある
詐欺事件とされてもおかしくはない

40:デフォルトの名無しさん
22/11/29 13:04:50.65 azSIQh15M.net
まぁ我々は困らないし
当事者が気を付ければ済む話
過去の事件ループはもう良いから
それで終わりにしろ

41:デフォルトの名無しさん
22/11/29 13:14:40.68 eTNa7b4f0.net
twitterなんて「規約読め」「API利用しろ」で終了だろ
図書館事件は特殊条件踏みすぎててミスリードすぎる

42:デフォルトの名無しさん
22/11/29 13:16:57.04 fQLmT73p0.net
>>32
逆に、人がAPIで提供されるjsonのデータ読めって言われてもきついでしょ
それと同じで人が読みやすいように作られてるWebのUIをソフトウェアにやらせるのは筋違いなんだよ
seleniumにしたって元々はJavaScriptのテストを走らせるために作られていて、誰かが作った仕様のはっきりしないWebサービスのUIを解析するためには作られてないと思うよ
今もそうだかは使ったことないからはっきりとはいえないけど

43:33
22/11/29 13:34:20.35 Rlb9t/Eq0.net
元々、Selenium Webdriver, Capybara などは、
Ruby on Rails の開発で、システムテストで実際のブラウザを自動操作して、
画面の動作を確認するためのツール

44:デフォルトの名無しさん
22/11/29 14:04:13.09 AC1KYodjd.net
Ruby馬鹿がいつもの噓

45:デフォルトの名無しさん
22/11/29 14:04:43.85 sKS8alA2M.net
API使いたくないからスクレイピングするんだろ
何言ってんだか

46:デフォルトの名無しさん (ワッチョイ 5701-ZS+X)
22/11/29 14:28:15.03 6F6KBCUn0.net
>>44
今回はちょっと違う

47:デフォルトの名無しさん (ワッチョイ 9f2a-+r4L)
22/11/29 15:17:30.94 NO7HG1hV0.net
>>32
おっしゃる範囲では模倣してることになるよ
しかしPythonのライブラリでブラウザの全部の機能を模倣するのは難しいので、Javascriptをゴリゴリ使うようなサイトではブラウザを模倣するんじゃなくてブラウザにレンダリングを外注するのよ

48:デフォルトの名無しさん
22/11/29 18:02:03.33 lUjN289S0.net
集合って使う?

49:デフォルトの名無しさん
22/11/29 18:10:29.16 q/VfFbZ+6.net
はい

50:デフォルトの名無しさん
22/11/29 18:10:39.03 JTTSm0Nf0.net
辞書でキーが値でもある場合とか、リストからユニークなもののみ抽出したいときとか、たまに使う

51:デフォルトの名無しさん
22/11/29 19:26:38.65 3YOnpcyo0.net
>>32
サイト開いて、ってなに?

52:デフォルトの名無しさん
22/11/29 19:30:41.60 GC2yOS5aa.net
>>48
集合ってセット型のこと言ってるよね?
どんな職種かにもよるけれど
俺の働いてる環境だとfor文と同じ頻度で使う感じかな
集合ってすごく便利でさ
重複削除するのも排他的な処理にも使えるのでめちゃめちゃコスパいいんだよ

53:デフォルトの名無しさん
22/11/29 19:34:01.33 GC2yOS5aa.net
>>48
何を言っているかと言うと
for文はイテレータとして機能するんだけど
set型はフィルタリングとして使えるんだ

54:デフォルトの名無しさん
22/11/29 19:36:34.48 GC2yOS5aa.net
>>48
更に何を言っているかというと
FizzBuzz問題も一行で解くこともできて便利なんだよって話ね

55:デフォルトの名無しさん
22/11/29 19:46:06.06 lUjN289S0.net
重複を削除したい、というタイミングで集合に入れて戻す
とかならそういう関数だとみなせるので必要が生じたら使う、でいい
ではなくて、最初からずっと集合で持ち続けるような用途があるかどうか

56:デフォルトの名無しさん
22/11/29 20:21:39.71 SFyPOz/XM.net
>>55
普通にある。
アンケートの選択肢の一覧がわかっていないときに選択肢集合を取り出すのに使ったり、
スケジュールを調整するときに、日程集合aと日程集合bの積集合が空かどうかでスケジュールが被っていないかを確認したりなど、
入れるときから集合にしておいた方がいいケースはいくらでもあるよ。

57:デフォルトの名無しさん
22/11/29 20:38:01.11 lUjN289S0.net
重複してたら集合に追加する時にはじかれる訳だけど、
それに関してはケアしなくていいの?
無視されてしまったスケジュールの人が発生しそうだけど
勝手に重複が削除される仕組みはどう考えても危険で、
うまく使える局面が思いつかない

58:デフォルトの名無しさん
22/11/29 20:53:34.02 VRBW4+C+0.net
初心者スレ行ったほうがいいんじゃないか?
s1 = {"2022-12-01", "2022-12-02"} // Aさんの希望日
s2 = {"2022-12-02", "2022-12-03"} // Bさんの希望日
print(s1 & s2) // -> {"2022-12-02"}

59:デフォルトの名無しさん
22/11/29 21:10:31.21 dP4707zz0.net
s1 = ["2022-12-01", "2022-12-02"]
s2 = ["2022-12-02", "2022-12-03"]
print(set(s1) & set(s2))
これでも同じなんだよな
&演算が強力だから使いたいだけで、集合で保持しておくメリットが無い

60:デフォルトの名無しさん
22/11/29 21:11:54.06 NO7HG1hV0.net
リスト→セットがゼロコスト変換なわけなかろう

61:デフォルトの名無しさん
22/11/29 21:14:02.60 eLjR8f750.net
s1 = ["2022-12-01", "2022-12-02"]
s2 = ["2022-12-02", "2022-12-03"]
for x in s1:
for y in s2:
if x == y:
print(x)
オラァ!

62:デフォルトの名無しさん
22/11/29 21:18:24.33 +HrRhDam0.net
内部でソートされてないと有り難みも半減

63:デフォルトの名無しさん
22/11/29 22:34:54.85 UIouEa7w0.net
Listが標準、Setがライブラリ拡張で不利だとしても
ドキュメンテーション重視でSetつかうことあるし
視野がせまいとしか

64:デフォルトの名無しさん
22/11/29 23:09:52.10 4MUOq3YH0.net
>>59
それどう見てもリストで保持するメリットの方がないだろ...

65:デフォルトの名無しさん (ワッチョイ ffbb-NZIw)
22/11/29 23:36:33.92 JTTSm0Nf0.net
すぐにあれこれ思いつかないけど、予め予約語や予約番号を突っ込んでおいてユーザがそれらを入力したら弾くとか、処理済みのファイル名を覚えておくとか

66:デフォルトの名無しさん
22/11/30 06:40:38.93 Wig3zpdW0.net
ブラウザの履歴だな

67:デフォルトの名無しさん
22/11/30 06:44:23.82 VpVi1ao4a.net
履歴はURLだけでなくアクセスした日時も覚えておく必要あるからSetだけだと難しい

68:デフォルトの名無しさん
22/11/30 13:21:08.67 5wV2hx4y0.net
>>57
それをケアしたいならin演算子を使えばいいだけであって、setの根本的問題ではない。
そして、in演算子はlistとsetならどう考えてもsetのほうが速い。
もちろん、重複を許さないリストのバリデーションなんかにも使えるよね。

69:デフォルトの名無しさん
22/11/30 13:29:48.45 5wV2hx4y0.net
リストで持っておけばいいじゃん、必要なときにsetに変換して処理するから、という人は、計算量なんかを考えてみるといいよ
計算量無視するなら62のコードでいいじゃんってことになっちゃうしね。
まあ、Python遅いから計算量を減らすようなコードを書くことに説得力がないというのはそうなんだけど、
結局普段からそういう練習していないと高速化したくてC++に一部実装を変更したときに速いコード書けないから。
もちろん、リストで作っておいてsetに変換する方がいいケースもあるよ。
PandasのDataFrame,Seriesのインデックスのところで演算するのなんかも、集合的な演算で行なっているのだし、慣れておいて損はないと思うが。(実態はboolのSeriesだけど)

70:デフォルトの名無しさん
22/11/30 19:56:40.31 x00c17Gpa.net
セットを学ぶ時間と意義はあるってことな
セットは慣れたら便利
速度もメモリにも優しくて安心
セット知らないってなんかダサいw
よってこれはPythonistaの総意です

71:デフォルトの名無しさん
22/11/30 22:33:59.64 QeHG+uMw0.net
辞書が上位互換では?

72:デフォルトの名無しさん
22/11/30 22:47:34.56 rU+WJpIK0.net
値がいらないときは辞書を使う意味がない

73:デフォルトの名無しさん
22/11/30 23:08:38.63 v5dUZ8sT0.net



74:perlで、値として何でも1を入れて有無だけ判定するような使い方してた 配列でできれば良かったんだけど



75:デフォルトの名無しさん
22/11/30 23:12:12.55 v5dUZ8sT0.net
と書いてから気付いた
これsetの有効な用途だな
一度処理した対象は二度と処理しないように処理済みの一覧を作りたい
それを管理する為にsetはうってつけ

76:デフォルトの名無しさん
22/11/30 23:36:43.30 QeHG+uMw0.net
だからそれは辞書でもできるでしょ?

77:デフォルトの名無しさん
22/11/30 23:59:38.73 v5dUZ8sT0.net
辞書でも可能だけどいかにも頭悪いので辞書でやるべきではない

78:デフォルトの名無しさん
22/12/01 00:09:20.39 NDzBgIvm0.net
集合演算できるのか、いいなあ

79:デフォルトの名無しさん
22/12/01 00:40:40.07 j5V8nih+0.net
過剰なものを使いたくない気持ちを持っていたほうがいい

80:デフォルトの名無しさん
22/12/01 00:59:18.11 YFm4Yapz0.net
合理的でないとコードの意図が伝わりにくくなるやん
門外不出の書き捨てならどうでもいいけど

81:デフォルトの名無しさん
22/12/01 08:03:00.66 c3eQdr+KM.net
なに使おうがココ見てる奴は誰も困らんので
各々好きなように活用すればいい

82:デフォルトの名無しさん
22/12/01 17:07:42.57 NDzBgIvm0.net
モチベーションのためにpythonで
awsのサーバーレスいじってる
別に何かを作るつもりはないけど
あー、こうやってユーザーの入力を受け取るのね、
とかデータベースへの書き込みをいじってる

83:デフォルトの名無しさん (ワッチョイ 9f02-CHuw)
22/12/01 22:19:38.72 QPJQThlG0.net
>>72
順番を保存したい時は辞書を使う

84:デフォルトの名無しさん
22/12/01 23:40:07.68 sismMzCH0.net
OrderedDict使おう

85:デフォルトの名無しさん
22/12/03 15:38:28.64 .net
pandasで思ったのですが
import pandas as pd
df=pd.DataFrame({"A":range(0,10,1),"B":range(10,20,1),"C":range(20,30,1)})
df["A+B"]=df["A"]+df["B"]
df["A+C"]=df["A"]+df["C"]
print(df)
これってA+BとA+Cで計算量はO(2n)になっちゃいます?よね
だったら
df["A+B"]=0
df["A+C"]=0
for i in range(len(df)):
 df["A+B"].iloc[i]=df["A"].iloc[i]+df["B"].iloc[i]
 df["A+C"].iloc[i]=df["A"].iloc[i]+df["C"].iloc[i]
こうすればO(n)だと思うのです?がこういう風に書かないのは視認性を優先しているからでしょうか?

86:デフォルトの名無しさん
22/12/03 16:01:43.70 HS9T9UMm0.net
そもそも O(2n) なんて書かないぞ

87:デフォルトの名無しさん
22/12/03 16:38:55.55 YuLtkiXA0.net
>>84
どっちもO(n)だし実際に実行してみると後者の方が遅いと思うよ

88:デフォルトの名無しさん
22/12/03 17:03:14.55 hui5F7Ye0.net
実測してみればいいのに

89:デフォルトの名無しさん
22/12/03 17:15:26.84 xZYRIIQ3.net
>>86
なるほどそうなんですね
前者だと、len(df)の回数だけループしてdf[""]に結果が代入される、をdf[""]=の行だけ繰り返すようなイメージで
例えばlen(df)が10万あったとしたら、10万ループ後にまた10万ループ…、みたいなことかと思ってました
実測してみました(合っているかどうかわかりませんが
かなり遅くなりましたね
import pandas as pd
import time
df=pd.DataFrame({"A":range(0,10000,1),"B":range(10000,20000,1),"C":range(20000,30000,1)})
start=time.time()
df["A+B"]=df["A"]+df["B"]
df["A+C"]=df["A"]+df["C"]
end=time.time()
print(end-start)
start=time.time()
df["A+B"]=0
df["A+C"]=0
for i in range(len(df)):
 df["A+B"].iloc[i]=df["A"].iloc[i]+df["B"].iloc[i]
 df["A+C"].iloc[i]=df["A"].iloc[i]+df["C"].iloc[i]
end=time.time()
print(end-start)
#0.0027747154235839844
#5.960754871368408

90:デフォルトの名無しさん
22/12/03 17:44:15.36 YuLtkiXA0.net
>>88
C/C++言語で似たような処理をうまく実装すれば、基本的にはどっちの書き方でもそんなに違わないのだけどね。
結局は行数×2の足し算をしなければいけないのは、どうループを回そうが同じ
(厳密にはCPUのキャッシュに載る書き方をするかどうかとかで性能は違うかもだけど)
Pandasの場合、DataFrameは、実は列ごとのデータであるSeriesをくっつけてるだけで、
列と列を足して新しいSeriesを作るような演算は、Series同士の演算ということで専用のCのコードが走ってロスが少ない。
一方1行ごとにPythonのforループで値を取り出して出すと、Pythonの遅いループのせいで遅くなる。
NumPyでもPandasでも、ブロードキャストせず値を一個一個取り出すような処理はめちゃくちゃ遅くなるからどうしようもない場合以外避けるべき。

91:デフォルトの名無しさん
22/12/03 17:51:36.28 hui5F7Ye0.net
外部モジュール使わない場合でも、
本当にループを書くより、同等の処理が一行で書ける系の書き方の方が速い

92:デフォルトの名無しさん
22/12/03 18:32:31.91 H3EtATlxa.net
>>84
富豪になれ

93:デフォルトの名無しさん
22/12/03 18:35:20.84 H3EtATlxa.net
iでループするとiというPyObjectにいちいちアクセスするから無駄が増える

94:デフォルトの名無しさん
22/12/03 20:52:15.48 AKVIlfb6M.net
計算よりもコードの解釈10000回に掛かる時間が長いのよ

95:デフォルトの名無しさん
22/12/03 21:05:08.47 hui5F7Ye0.net
実はこっそりコンパイルしてるだろと思っても本当にインタプリタなんだよな
変数名とか間違ってても到達しなければエラーにならない

96:デフォルトの名無しさん
22/12/03 21:18:53.10 pO2d8Q/6a.net
今時JITもない純粋なインタプリタだしな
どう考えても速くはならない

97:デフォルトの名無しさん
22/12/03 22:10:50.47 aUunlJ3Sd.net
>>84
O記法に使われるのは極限の値だからO(n)もO(2n)も大差がない一次関数的オーダーとみなされる

98:デフォルトの名無しさん
22/12/03 23:18:09.05 AKVIlfb6M.net
スクリプトなのを逆手に取ったトリッキーな事も出来るけどね
変数名を辞書のキーに使ってウィジェットを管理することでeval関数で自動同期できたりとか

99:デフォルトの名無しさん
22/12/03 23:25:00.89 hui5F7Ye0.net
perlはコンパイルしてから動くのに、evalで動的なことできるんだよな
あいつが一番気持ち悪い

100:デフォルトの名無しさん
22/12/04 00:54:32.96 E/Vw0mdO0.net
>>84
後者も毎回2行の処理があるから2nだよね

101:デフォルトの名無しさん
22/12/04 10:22:35.31 2Pwe8xJ8a.net
Oが下がってもループそのものをpythonで描いてる限り速くならんって話だろ

102:デフォルトの名無しさん
22/12/04 10:53:22.33 AtzUGoNp0.net
>>97
もうちょっと詳しく聞きたい

103:デフォルトの名無しさん
22/12/04 11:16:52.00 1/Hu21BBd.net
ChatGPTがやばい
たとえばネットで公開されてるプログラムのソースコードを渡したらめちゃくちゃ詳細に教えてくれる
自分はpython初心者だけど、理解できるレベルに噛み砕いて説明してもらえる
ここまですごいと「プログラム勉強する意味とは?」と不安になってくる
本当に「AIにやらせりゃいい」の時代が来る
これから人類は、仕事の価値が安すぎてロボットやAIにやらせないような、隙間の部分を仕事にしていくしかないかも
金銭的な資産がない状態から、技術を通して一定の財産を築いていくことは難しくなっていって
資産がある人間は苦労もせずさらに財産を増やせる、という社会構造だけが残ってしまうのでは

104:デフォルトの名無しさん
22/12/04 12:10:29.10 vdoNuXff0.net
ひらめいた

105:デフォルトの名無しさん
22/12/04 13:23:26.47 0ZfK2JLIM.net
>>101
自分はtkinterをクラス化して使ってるんだけど
ウィジェットを管理するクラスと、1つの変数に対応した複数のウィジェット持つフレームクラス(ラベル、インプット、ボタン)の2種類があって
管理クラスにウィジェットのタイプと変数名を渡せば、ウインドウ内に配置して、変数との同期を自動でやってくれるって感じにしてる
管理クラスは辞書で変数名をキーに、フレームオブジェクトを値として持っていて
updateを呼び出すとevalとexecをループで回して同期を行う感じ
色を変えたり、タイトルを変えたりするときは変数名をハンドル代わりにしてアクセスする
変数には共有のモジュール変数を使う必要があるけどね

106:デフォルトの名無しさん
22/12/04 14:29:21.47 XaoAEs7Da.net
>>98
それrubyもpythonもphpも同じだぞ

107:デフォルトの名無しさん
22/12/04 14:40:23.35 CjwdkMkG0.net
rubyは知らんけど、phpはどう考えてもコンパイルしとらんだろ

108:デフォルトの名無しさん
22/12/04 14:45:10.78 XaoAEs7Da.net
コンパイルというのが機械語という意味なら
むしろPHPはJITなので1番してる
Rubyは最近YJITというのが入ってデフォルトでオフだが
オンにするとJITが走る
pythonはJITはしてないがVMの中間言語にコンパイルして実行している
perlもJITなしのVM中間言語にコンパイル

109:デフォルトの名無しさん
22/12/04 14:46:34.14 XaoAEs7Da.net
つまりどの言語も何かしらの中間言語にコンパイルはしている
その後JITするかは処理系の実装次第
これはV8やJSCでも同じ

110:デフォルトの名無しさん
22/12/04 14:48:27.42 CjwdkMkG0.net
そら、ソースファイルを実行できんし
全ての言語がプロセッサが実行できる形式に変換はしとるわ
言ってるのはそういうことではない

111:デフォルトの名無しさん
22/12/04 15:10:34.41 LiTniMSdM.net
お前らのバカさかげんには
開いた口が塞がらない笑笑
コンパイラ作ったことないのか?
なにがJITだバカw

112:デフォルトの名無しさん
22/12/04 15:44:47.04 OHPAilb60.net
JITはJIT(just in time)コンパイラの略なんだが...

113:デフォルトの名無しさん
22/12/04 15:50:06.61 qWdYVkpM0.net
BASICの時代から中間言語使ってるしな

114:デフォルトの名無しさん
22/12/04 16:00:54.70 XaoAEs7Da.net
>>110
かわいそう

115:デフォルトの名無しさん
22/12/04 17:22:39.36 OHPAilb60.net
今時の実用言語で純粋にインタプリタ形式なのはシェルスクリプトぐらいじゃないかな

116:デフォルトの名無しさん (ワッチョイ 9630-RX5i)
22/12/04 17:56:55.17 AMZRvu8s0.net
>>104
時間の問題でしょ
アメリカでは自律のタクシーが稼働しているぐらいだし
時間の問題で労働人口は大幅に減る

その前に役所系の手続きをなんとかして欲しいけど
引っ越した時のナンバープレート交換とか
1番並んで、10番並んで、15番並んでと、、延々と指示されたところに行って並んで
書類提出して待つってことを朝からやり続けてプレート付けて帰るまで1日かかったけど
中国人が途中でキレて「お前いくらもらってるんだ?すぐ出来ないのか!」とか怒鳴ってたけど
もうあり得ない

117:デフォルトの名無しさん
22/12/04 19:21:18.01 o3Jeub4td.net
スレチの話するや釣って安価すら間違うから始末に負えない

118:デフォルトの名無しさん
22/12/04 19:25:47.00 HgjSOVEG0.net
別の時空間と重ね合わせが起きているせいじゃないか?
どうも間違えていると言う認識を持ってなさそうだし

119:デフォルトの名無しさん (ワッチョイ 9b5f-QHkP)
22/12/07 23:42:34.19 18d7hgTv0.net
pythonから初めた人が、一番ビックリするのはどの言語だろう。
異質というか書き方、考え方がまったく異なるのは

120:デフォルトの名無しさん
22/12/07 23:47:25.14 cTs8jKu40.net
一般的なのはALGOL系言語ばかりだから
その範囲で見るかどうか

121:デフォルトの名無しさん (ワッチョイ 1666-qI7H)
22/12/07 23:54:09.00 zyT8atzW0.net
びっくりの方向性だよな
そんな原始的なのという驚きか、そんなに進歩してるのなのか

122:デフォルトの名無しさん
22/12/08 00:31:24.99 QpDPt4dNM.net
Lisp、Prolog、Haskell
近いようで遠いRubyやJavaScriptも少し潜れば驚くかも

123:デフォルトの名無しさん
22/12/08 00:53:56.36 9104bOlZ0.net
sed
言語じゃないと言う説もある

124:デフォルトの名無しさん
22/12/08 04:16:29.48 xxMUZ71f0.net
FORTH&MIND系、APLが吃驚どっきりかと

125:デフォルトの名無しさん
22/12/08 04:57:00.65 wTGSW5Ddr.net
アセンプリ言語はさすがの俺でもチンプンカンプン

126:デフォルトの名無しさん
22/12/08 09:21:07.59 1SDiWL4a0.net
情報技術者のテスト範囲だぞ

127:デフォルトの名無しさん
22/12/08 09:33:08.99 448yHz6S0.net
>>117
意識はあるけど、初めて書き込むので
話題が変わるまで、様子を見ようと思って、、、
しばらくして、、いきなり違うIDで連投に近い形で2レス入って、、
またしばらく空く感じか、、、
よくあるパターンだったな

128:デフォルトの名無しさん
22/12/08 09:40:19.93 DDcWYWxw0.net
誰か>>126の言ってること翻訳して

129:デフォルトの名無しさん
22/12/08 11:02:14.98 1XQgTTzM0.net
>>102
ヤバいな。もう人間のコーダーいらん未来が見えてくる。

130:デフォルトの名無しさん
22/12/08 11:17:00.51 1SDiWL4a0.net
そんな未来は前から見えていたけど、予想よりも早く来た
技術の進歩は加速度的に進むことをいつも忘れていて、
この感じで行けば、でつい推測してしまって、もうできたのかと驚く
AIは特にそう

131:デフォルトの名無しさん
22/12/08 11:25:47.13 4UfRv5L5M.net
ChatGPT実際使ってみたら分かるけど
ニッチな要求にはまるで駄目
所詮は自然言語処理AIでしかないよ
そう考えたときに必要なくなるのはプログラマーではなく"文系"だということが分かる

132:デフォルトの名無しさん
22/12/08 12:10:52.68 1XQgTTzM0.net
>>130
自分の書いたコード貼って、評価してって言ったら
目的からやりたいこと、改善策までペラペラ解説してくれたぞ。
まだまだ伸び代があるよ。

133:デフォルトの名無しさん
22/12/08 12:28:42.93 5XymevYj0.net
>>131
さすが文系様、スレ違いを延々とご苦労様

134:デフォルトの名無しさん
22/12/12 12:10:56.90 oLi82JVG0.net
理系は論文書いて博士号取って
研究者として、
悠々自適の人生だからね。
たまにFラン理系のバカのクスがIT関連の
仕事してるそうだが
恥ずかしいから理系と言わないで欲しいよね。
IT関連の仕事は文系の仕事だから笑笑

135:デフォルトの名無しさん
22/12/12 14:10:00.13 G6HMqHLsM.net
馬鹿は黙れ

136:デフォルトの名無しさん
22/12/12 14:14:55.12 eOEB7iLN0.net
そういう国もあるだろうけど、日本では研究職は目指さない
修士まで取ってメーカーに入る
就職活動とかしなくてもリストから選んで入れる
その後は、学部卒よりは少し高い給料からスタートする普通の会社員

137:デフォルトの名無しさん
22/12/12 14:37:58.23 RJtkOsuD0.net
日本で研究者やろうとすると悠々自適にはなれない
そうありたい奴は海外に行くけど結局成果が必要になるから結局悠々自適からかけ離れていく

138:デフォルトの名無しさん
22/12/12 15:21:57.13 tgEgCWEL0.net
プログラミングとかやりたい人は
自分の書いたコードで世界を変えたかったり
ビジネスたちあげてバリバリ稼いだり
したい人達だと思ってたから
かなりショックだわ

139:デフォルトの名無しさん
22/12/12 15:48:17.78 eOEB7iLN0.net
ただの道具だよ
じどうしゃとか運転する人は世界中を駆け回ると思ってた的な

140:デフォルトの名無しさん
22/12/12 17:43:09.27 44htA5bGM.net
仕事がなくなるのは、理系文系という�


141:謔閨A事象を抽象化してモデリングする能力のない人という気がするけどな。 適切な抽象化は現実世界の理解なしには成り立たないから、現実世界にエージェントを持たないChatGPTではなかなか出来ないことだと思う。 もしできるようになったらそれこそシンギュラリティだと思う。



142:デフォルトの名無しさん
22/12/12 18:03:28.13 eOEB7iLN0.net
この作業はマニュアル書けば他の人に依頼できるな
と思えるような仕事はみんなAIでもできる
日本の雇用はわざわざ高度な能力が要求される仕事を減らして、
誰でもできるタスクにブレイクダウンしてしまったので、今後一気に空洞化する

143:デフォルトの名無しさん
22/12/12 18:18:41.45 BWUj5Mhq0.net
仕事がなければ、作れば良いのよ(byお役所)

144:デフォルトの名無しさん
22/12/12 20:34:25.29 tgEgCWEL0.net
>>141
お役所は、はんこ文化とかで
自分の職だけは守り抜きそう

145:デフォルトの名無しさん
22/12/12 20:57:49.46 OzGBr6Gb0.net
>>141
実は仕事を作り出す仕事ってAIが苦手とするところでね

146:デフォルトの名無しさん (ワッチョイ 7f30-u86g)
22/12/12 23:48:12.51 bEKuFd6N0.net
DeepMindが開発したAIの「AlphaCode」がプログラミングコンテストで「平均」評価を獲得
gigazine.net/news/20221212-competition-level-code-generation-alphacode/

147:デフォルトの名無しさん
22/12/13 08:39:04.79 iw6m1jKz0.net
AIに囲碁ができると驚いていた時代が既にのどかだな

148:デフォルトの名無しさん
22/12/13 09:49:13.62 f4PSgE9xa.net
一番やばいのは単純コーダーよりもむしろ、自分ではプロダクト作れない自称AIエンジニアやデータサイエンティストの類だと思うけどね
ある意味一番汎用AIの影響を直接受けるわけだし、もともとアウトプットの品質に直接的に責任を持たずにプロダクトサイドに丸投げだから問題なくAIで代替できてしまう
コンサルできない奴は早晩詰むよ

149:デフォルトの名無しさん
22/12/13 10:18:46.30 iw6m1jKz0.net
そうか?
単純に下から順番にAIに置き換わっていくと思うけど
修行が必要な仕事が機械化されていく
修行でそれぞれが同じテクニックやノウハウを体に叩き込むプロセスが不要になる

150:デフォルトの名無しさん
22/12/13 12:17:44.07 IaV/5b1zd.net
直近でヤバいのがテスターとかだと思うわ
未だにexcelで工程表書いてるSierがやってるやつ

151:デフォルトの名無しさん
22/12/13 12:18:39.32 dwUU8HKp0.net
l = ['x', 1, 2, 3, 'x', 4, 5, 'x']
ll = [[1, 2, 3], [4, 5], []]
みたいに、区切り文字間でリスト分割ってどうやったらいいですか?

152:デフォルトの名無しさん
22/12/13 12:28:47.82 U6ceeI5E0.net
more_itertools.split_at
とか?ほかでも書けそうだけどmore_itertools推しなので

153:デフォルトの名無しさん
22/12/13 13:25:44.81 8z83YMJG0.net
人間はデータ集め
0から1を作り出す作業でも
蓄積されたデータがあれば機械学習でも出来るようになる
人間はやってることをデータ化して蓄積するのが仕事

154:デフォルトの名無しさん
22/12/13 15:02:54.27 TTYL+bZwM.net
Truman 乙

155:デフォルトの名無しさん
22/12/13 15:20:08.68 iw6m1jKz0.net
>>149
最後に[]付くなら先頭にも付かないと
[]は勝手に削除してくれる方が嬉しい

156:デフォルトの名無しさん
22/12/13 17:32:35.97 nQGEQQWFH.net
>>150
あら~
>>153
すいません書きミス
[[], [***], [***], []]で合ってます
ちな最終的にほしいのは
[[***], [***]]だけです
区切り文字区間かつ有要素リストです
values =[]
temp = []
for i in l:
でゴリゴリは書けます

157:デフォルトの名無しさん (ワッチョイ 7f33-3TNT)
22/12/13 19:36:48.06 ixSZ5WuR0.net
l = ['x',1,2,3,'x',4,5,'x']
ll = ''.join(map(str, l))
ll = ll.split('x')
ll = list(filter(None, ll))

158:デフォルトの名無しさん (ワッチョイ 7f33-3TNT)
22/12/13 19:38:28.29 ixSZ5WuR0.net
l = ['x',1,2,3,'x',4,5,'x']
ll = ''.join(map(str, l))
ll = ll.split('x')
ll = [x for x in ll if x]

159:デフォルトの名無しさん
22/12/13 20:01:21.70 GoEkhVMn0.net
itertoolsにありそうだなと思ったらやっぱりあったよ
URLリンク(stackoverflow.com)

160:デフォルトの名無しさん
22/12/13 20:06:27.54 iw6m1jKz0.net
ずっと前に似たような話題があったな
splitのlist版が欲しいという話
結局、numpyにそんな機能があったけど、itertoolsにあったのか

161:デフォルトの名無しさん
22/12/13 21:14:51.23 9xNtAiBx0.net
itertools.groupby
more_itertools.split_at
じいおぼえた

162:デフォルトの名無しさん
22/12/13 21:38:31.41 iw6m1jKz0.net
理解するのに結構かかった
groupbyで書けるというのはかなりトリッキーでないかい

163:デフォルトの名無しさん
22/12/13 22:43:21.73 OZR75EB8M.net
>>160
トリッキーと思うなら愚直な方法でいいんじゃないかな。
バカにしてるわけではなく、どこまでがリーダブルと思うかっていう個人の線引きの問題かなと思うから
でも、標準ライブラリに〇〇型限定ならあるのに、というものは大体itertoolsとかmore_itertoolsとかtoolzにある印象

164:デフォルトの名無しさん
22/12/13 23:21:41.02 9xNtAiBx0.net
区間抽出だからグルーピングで実現すると直感的ではないわね
llist = [list(y) for x, y in itertools.groupby(_list, lambda x: x == 'x')]
llist = list(more_itertools.split_at(_list, lambda x: x == 'x'))
よい

165:デフォルトの名無しさん
22/12/14 01:32:07.45 kqHjkPOA0.net
みんなのPythonの参考プログラムで、作者の趣味を押し付けることの危険性を再認識した
キメぇとかそういうのもあるがそれ以上に
長年好きだった職場の女の子に振り向いてもらえないまま知らん奴と結婚されたのと、ももクロメンバーの結婚が重なるとかさ(´;ω;`)

166:デフォルトの名無しさん
22/12/14 12:17:16.42 4cdDqMfv0.net
コード探せなかったんだけど
numpy.isnan()てどうやってnan判定しとるの?
というか(nan == nan) is False ってコンピウター的にはどういう実装?なん? nan?

167:デフォルトの名無しさん
22/12/14 15:25:15.40 ehQRDkpX0.net
>>164
nanにもいろいろあるからなのかな
ちゃんと読める人がいたら僕も教えてもらいたい
URLリンク(ja.m.wikipedia.org)
> NaNにも符号や仮数があるが、分析以外の目的では使えない。fraction の先頭ビットで 「signaling NaN」と「quiet NaN」を区別する。
> NaNと無限大はexponentフィールドが全て1である。

168:デフォルトの名無しさん
22/12/14 17:32:49.83 TSZjSIoj.net
ある価格範囲でpriceとsizeが(d=0.25)ずつ変化します
それぞれの数値を計算したいのですが
こんなにコードが長くなってしまいました・・
URLリンク(ideone.com)
・価格priceが上がればサイズsizeがは下がる
・各価格のsizeの合計はsize=10を超えない
と言った感じです
もうちょっとすっきり書けないでしょうか

169:デフォルトの名無しさん
22/12/14 17:35:23.66 TSZjSIoj.net
訂正
>・価格priceが上がればサイズsizeがは下がる
・価格が上がれば、サイズも上がる
でした

170:デフォルトの名無しさん
22/12/15 11:37:30.33 K5mZtPm60.net
l = [(0, 1), (1, 2),,,]
l1, l2 = [x, y for x, y in l]
みたいなことがやりたいです。どうにかなりませんか
配列がじゅうぶん長いときに
l1 = [x for x, y in l]
l2 = [y for x, y in l]
より高速だとうれしいです

171:デフォルトの名無しさん
22/12/15 11:47:31.87 h3HR2no+0.net
>>168
速いかどうかはともかく、Pythonなら
l1, l2 = zip(*l)
が定番じゃないかな

172:デフォルトの名無しさん
22/12/15 12:00:38.16 c5NlDjZDH.net
そうだった
お恥ずかし~

173:デフォルトの名無しさん
22/12/15 12:41:36.31 gJFaHKKS0.net
1,東京,abc
2,名古屋,def
3,大阪,ghi
上記csvファイルを読み込んで、レコード毎に変数no,data1,data2に読み込むにはどうすれば良いでしょうか?

174:デフォルトの名無しさん
22/12/15 13:04:48.59 OpF21df80.net
>>171
何がしたいのかわからんけど、その系はpandasを使うのがオススメ。

175:デフォルトの名無しさん
22/12/15 13:08:07.43 itdlyzVP0.net
>>171
import csv
with open("a.csv") as csvfile:
    csvreader = csv.reader(csvfile)
    [no, data1, data2] = zip(*csvreader)
    print(no, data1, data2, sep="\n")
# ('1', '2', '3')
# ('東京', '名古屋', '大阪')
# ('abc', 'def', 'ghi')

176:デフォルトの名無しさん
22/12/15 13:17:17.28 EjBP7v2j.net
>>171
import pandas as pd
df=pd.DataFrame({
"ctiy":["東京","名古屋","大阪"],
"tag":["abc","def","ghi"]
})
df.to_csv("sample.csv")
import pandas as pd
df=pd.read_csv("sample.csv",index_col=0)
df.reset_index(inplace= True)
df=df.rename(columns={"index":"no","ctiy":"data1","tag":"data2"})
df

177:デフォルトの名無しさん
22/12/15 13:39:37.94 EjBP7v2j.net
元のcsvが文字通り>>171
,,
1,東京,abc
2,名古屋,def
3,大阪,ghi

なら
import pandas as pd
df=pd.read_csv("sample.csv")
df.columns=["no","data1","data2"]
だけ

178:デフォルトの名無しさん (ワッチョイ bf66-WhVq)
22/12/15 13:42:19.50 +QphYrCZ0.net
pandasのコードのサンプルってデータの定義部分も書いてあったりするけど、
実際にはファイルからしか読まないんだよな

179:デフォルトの名無しさん (ワッチョイ 7f33-3TNT)
22/12/15 13:44:08.19 jZ5UYKI00.net
>>173
no, data1, data2 = [row for row in zip(*csvreader)]

180:デフォルトの名無しさん
22/12/15 13:54:32.52 .net
ファイルから読み込もうがデータを受信しようが
実際にはそのまま使うことなんてほぼ無いからな
扱いやすいデータ構造に変形して管理した方が良い

181:デフォルトの名無しさん (ワッチョイ df07-5+d1)
22/12/15 14:05:26.43 itdlyzVP0.net
>>177
ん? ああ、左辺を [] で囲む必要ないんだ
その内包表記は何のため?

182:デフォルトの名無しさん
22/12/15 19:33:47.06 WOq9vVvEM.net
>>177
スマホでなんで確認しないで書き込んでごめんだけど、
内包表記のところは[*zip(csvreader)]でいい気がする(リストに変換できれば終わりかなと)

183:デフォルトの名無しさん
22/12/15 20:37:08.25 gJFaHKKS0.net
171です。
>>172,173,174,175,176,178
皆様ありがとうございます。大変助かりました。
関連本何冊か読んだけどファイルから変数に代入する方法が分からず悶絶してました。

184:デフォルトの名無しさん
22/12/15 20:58:03.02 fJwxlZ0H0.net
list()も不要でzipから直接受けられる
じゃないと173が結果も書いてるのに未確認で貼ったことになる

185:デフォルトの名無しさん
22/12/16 11:14:23.82 3VZ9c5Obr.net
機器AとBでpythonを使った通信する場合
socket通信以外で高速にやりとりする方法ってあります?

186:デフォルトの名無しさん
22/12/16 11:15:53.31 piGGDlWY0.net
スピード優先ならUDPでどぞ

187:デフォルトの名無しさん
22/12/16 11:38:42.83 3VZ9c5Obr.net
なるほどsocketのUDPでやれば良いのね
ありがとう

188:デフォルトの名無しさん
22/12/16 16:03:41.42 rm4TpDjP0.net
30代のPythonクソチョンは
とにかくクズで強姦魔の犯罪者!
半島系帰化人は絶対に職場に入れないように
両親と祖父祖母の戸籍謄本を
提出させましょう!

189:デフォルトの名無しさん
22/12/16 17:43:28.74 4Eg7ipQ20.net
ネトウヨは繁殖力ないから仕方がないだろう

190:デフォルトの名無しさん
22/12/16 18:08:49.01 rm4TpDjP0.net
クソチョンw

クソチョンw

クソチョンw

191:デフォルトの名無しさん
22/12/16 21:54:19.70 yqeA8G4+M.net
30代のPythonクソチョン男はクズの中のクズ!
日本で強姦を繰り返す悪魔!

192:デフォルトの名無しさん
22/12/17 22:05:04.24 XMlIIYJL0.net
「全てはオブジェクトなり」という設計哲学はカッコいいけど、いろいろ問題もでてくるよな
Trueは文字列でなくて、Trueオブジェクトと言われても、はじめはポカンとなる

193:デフォルトの名無しさん
22/12/17 22:52:14.03 ipB7/oQp0.net
いや、文字列とは思わんだろ
何かの特殊な数値かなと思う

194:デフォルトの名無しさん
22/12/17 23:59:45.68 VcpHcmaS0.net
メモリの状態が0だからって数値とは思わないよ

195:デフォルトの名無しさん
22/12/18 00:26:15.63 OI69MWyD0.net
真理値には苦難の道があったのぢゃよ

196:デフォルトの名無しさん
22/12/18 00:30:42.01 AADx/be20.net
我こそは真理なり
いや、真理は我に有り
お前は偽物だ!
いやお前こそ偽物だ!

197:デフォルトの名無しさん
22/12/18 00:33:21.00 oOL8xtAA0.net
特定の静的言語な処理系に囚われてんのか
メモリの状態が0って

198:デフォルトの名無しさん
22/12/18 01:13:36.18 UO+LT/gR0.net
return True
と書ける気持ちよさは、代えがたいけど

199:デフォルトの名無しさん
22/12/18 01:23:49.13 AADx/be20.net
私は常に真実を返します!

200:デフォルトの名無しさん
22/12/18 04:19:42.18 UO+LT/gR0.net
chatGPTに正直村の問題なげたら、どつなるんだ

201:デフォルトの名無しさん
22/12/18 07:34:18.92 5vAS6GPc0.net
chatGPT使いたいけど、電話番号の認証であきらめた・・
やってる人はよく番号提供できるなと思う

202:デフォルトの名無しさん
22/12/18 07:54:05.56 KkuIqKFR0.net
いつAIから電話かかってくるか判らんもんな

203:デフォルトの名無しさん
22/12/18 08:04:40.37 aM32xRe8r.net
俺もAIと話してみたい!

204:デフォルトの名無しさん (ワッチョイ 8a47-Jn8R)
22/12/18 08:47:30.00 KkuIqKFR0.net
チューリングテストのハードルむっさ上がる
どんなに高度なこと言ってても、いやお前合成音声やんでバレる

205:デフォルトの名無しさん
22/12/18 20:17:24.80 3yJ94/sX0.net
電話番号はSMSで認証するだけだぞ
それを危険視するならクレカで通販するほうが危ない

206:デフォルトの名無しさん
22/12/18 20:37:52.65 AADx/be20.net
>>202
ここの書き込みは大部分がAIのテスト運用
人間を見分かるの、とてもタイヘンね

207:デフォルトの名無しさん (ブーイモ MMe6-F7tP)
22/12/18 21:11:58.41 yS5MSdvxM.net
30代Pythonクソチョン男は強姦魔の犯罪者!
30代Python男を雇うときには
両親と祖父母の戸籍謄本を提出させましょう!

208:デフォルトの名無しさん (ワッチョイ 1f5f-or7Z)
22/12/18 21:22:39.16 UO+LT/gR0.net
>>202
xvideosみたいなエッチなサイトで流れる「決してこのゲームをダウンロードしないでください」みたいな広告あるよね。

あれ、aiの声だよ。amazonのpolyかな。
pythonならbotoで操れる。

209:デフォルトの名無しさん
22/12/18 22:10:14.58 M2ppGT+or.net
だ・れで・も一度はAIAI

210:デフォルトの名無しさん
22/12/19 00:00:44.84 w3Gm1Zrt0.net
エロはインターネットの原動力

211:デフォルトの名無しさん
22/12/19 06:53:54.69 itMdNDye0.net
30代Python男はチョンです!
犯罪者です!
雇うときには 父母と祖父母の戸籍謄本を提出させましょう!

212:デフォルトの名無しさん
22/12/20 06:40:54.58 y4iYu1GO.net
スコープ外の変数更新して別々のスコープで共有する感じが何か抵抗あるのですが
そういうものなのでしょうか・・?
A=10
def add(n):global A;A+=n
def view():global A;print(A)
add(11)
view()
add(3)
view()

213:デフォルトの名無しさん
22/12/20 08:16:58.64 Vq1NdAbT0.net
参照するだけの場合だとまたスコープが違う

214:デフォルトの名無しさん
22/12/20 08:32:25.32 Stc/PZwwM.net
そうしなきゃいいのでは?
A = add(A, 11)
view(A)

215:デフォルトの名無しさん
22/12/20 11:27:16.56 y4iYu1GO.net
>>212
普通はそういう風に引数増やすかクラス化したりしますよね・・?
でもそれは単に自分にバイアスかかってるだけなのかな、と思いまして。
もしくはglobalに何か使いどころでもあるのかなと。
コールバック関数だとlambda: callback(A)みたいな書き方を避けるため?みたいな

216:デフォルトの名無しさん
22/12/20 11:31:55.35 Vq1NdAbT0.net
規模とか目的によるんだろうな
ずっと保守するコードならきちっと書いた方が後々楽だし、
ささっと書いて終わりならglabalの方が早い

217:デフォルトの名無しさん
22/12/20 11:40:48.36 JRmAGSz50.net
名前空間あるしクラスのクラス変数、インスタンス変数と
立場というか複雑さはいっしょでない?

218:デフォルトの名無しさん
22/12/20 11:55:10.77 y4iYu1GO.net
>>214-215
なるほど、とりあえずは使い分けしていきたいと思います
ありがとうございました

219:デフォルトの名無しさん
22/12/20 12:19:36.88 3gHXSqyCM.net
スコープ外じゃない
global必要ない
A=10
def add(n): A+=n
def view(): print(A)

220:デフォルトの名無しさん
22/12/20 12:21:39.69 k+1oqZ2P0.net
>>213
log みたいに本筋に関係無いけどそこらじゅうで必要なものは global にした方が見通しがよくなる
あと設定ファイルから読み込んだ設定値等のように基本的に読み取りのみで変更しない物とかなら許容範囲
それ以外に global 使うことはあまりないな、俺は

221:デフォルトの名無しさん
22/12/20 12:29:38.27 XnPYkEMS0.net
書き換える場合はglobalが必要で、読み込む場合は必要ないって仕様だったはず

222:デフォルトの名無しさん
22/12/20 13:17:15.20 PtdONB4WM.net
>>218
僕の考えと全く同じ。完全に同意だわ

223:デフォルトの名無しさん
22/12/20 13:20:20.57 d0az3cXAa.net
>>219
てきとーなこと言うな
URLリンク(www.youtube.com)

224:デフォルトの名無しさん
22/12/20 13:25:04.13 XnPYkEMS0.net
>>221
ん?実際使ってそうだったから言ってるんだけど
バージョンによって仕様が違うのかな
ちな、3.7使ってる

225:デフォルトの名無しさん
22/12/20 13:55:06.97 2l59gNAZM.net
30代Pythonクソチョン男は強姦魔の犯罪者!
気をつけましょう!
あなたの近くにいます!

226:デフォルトの名無しさん
22/12/20 14:16:44.71 3CIih5oL0.net
>>222
合ってるよ
しかしglobalやnonlocalは(設計)負け犬の烙印

227:デフォルトの名無しさん
22/12/20 14:47:49.90 Vq1NdAbT0.net
main()を呼ぶ前に設定を読み込んで、全部大文字の定数みたいな変数に入れて参照させる
たまに書き換えたくなる

228:デフォルトの名無しさん
22/12/20 15:28:58.59 JRmAGSz50.net
設定系は直接操作するんじゃなくて薄いインターフェイスかました方が
環境で分けたりモックも容易になるからそうしてる

229:デフォルトの名無しさん
22/12/20 15:49:32.75 TXqlHGSa0.net
システムに一つしかないものを取り扱うハンドラみたいなのはglobalにするのが設計的にもおかしくない気がするけど
一概に負けとか言えないと思うけどなー

230:デフォルトの名無しさん
22/12/20 16:03:10.85 bLZdNL8i0.net
原理主義はどこにでも存在するからな

231:デフォルトの名無しさん
22/12/20 16:16:10.63 3CIih5oL0.net
globalの唯一まともな使い道はキルフラグみたいに定義は関数外に書く必要がある、その関数専用の変数 みたいなやつ
ああ外部コントロールあるんだな とglobal, nonlocal宣言部で読める
それ以外ではスコープ外の変数は明示的に引数に渡すべきであって云々。逆にシグナル引数で渡すのは気持ち悪いし

232:デフォルトの名無しさん
22/12/20 16:22:03.00 oBUmZgg40.net
グローバルは、C,B,BCPL,ALGOL以来の伝統的な概念で
変数に限らず外部モジュールをリンクするのにも必要だ
それらを踏まえたで、やたらと使うのはやめとこう、くらいの話か?

233:デフォルトの名無しさん
22/12/20 16:26:08.70 Vq1NdAbT0.net
組み込み系は今でもC言語で、膨大なglobal変数の塊で動いている
当然干渉は発生しまくってそれは人間業ではコントロールできないので、
解析ツールでやばそうな箇所をリストアップして人間がじっくり調べる方法で今も作っている

234:デフォルトの名無しさん
22/12/20 17:01:28.69 ni2L+av30.net
>>230
初心者がglobalやnonlocal手を出すときはまず構造が間違っとるって話でしょ
eval, execも同じ。 慣れてるやつが意図的に使うなら好きにしたらいいじゃんョ

235:デフォルトの名無しさん
22/12/20 17:44:04.58 GaxDEwu0a.net
変数宣言がないpythonでグローバル変数など狂気の沙汰
マジで辞めとけ

236:デフォルトの名無しさん
22/12/20 17:53:56.68 paaoChG1d.net
グローバル変数に関してはPython は変数宣言あるぞ

237:デフォルトの名無しさん
22/12/20 18:53:45.23 k+1oqZ2P0.net
>>230
グローバルはその話で合ってる
問題はPythonは読出しだとグローバルで書き込みだとローカルになると言う一瞬?ってなる仕様だと言う事
まあよくよく考えたらそれなりにリーズナブルな仕様だとは思う

238:デフォルトの名無しさん
22/12/20 19:28:23.44 XnPYkEMS0.net
グローバル変数用のモジュールを用意すれば全て解決

239:デフォルトの名無しさん
22/12/20 19:31:19.26 GaxDEwu0a.net
大人しく引数で渡せって

240:デフォルトの名無しさん
22/12/20 19:32:53.36 KsWI+ERLa.net
キーワードとしてのglobalと、使い方としてグローバルの話が混ざってるなぁ
モジュールに変数設定して実質的にグローバル変数として使えるので、普通に使っていてキーワードとしてのglobalの使用は不要と言っても言い過ぎではないだろう
組み込みがグローバルだらけになるのは、ハードウェアが変数の値を勝手に書き換えることがあり、それを前提とした処理を書くため
結果的に組み込みプログラマーはグローバルが不要なところでもグローバルで書くのが慣習となってしまった
これは直すべき悪習だが、ハードウェア開発とソフトウェア開発はスキルセットが違うので、両方をカバーできる人はほとんどいないのが現実

241:デフォルトの名無しさん
22/12/20 20:25:35.35 TXqlHGSa0.net
>>238
そうなんだよなあ。組み込み屋と純粋ソフト屋は職能違うからね。
純粋ソフト屋が時間をかけて綺麗なコードを書く努力をしている間に、組み込み屋は別のことやってるからね。データシート通りに書き込んでるのに動かないけど、結局データシートが間違ってる、みたいな検証とか、波形見て波形が正しく出てない、みたいな検証とか。
純粋ソフト屋が組み込みのプログラムが汚いって馬鹿にするのはなんか違うと思うんだよね。

242:デフォルトの名無しさん
22/12/20 20:38:06.37 is7jIq/00.net
組み込みのプロセッサは遅いんだよ
ROMもRAMも少なくて、きちきちに詰めてる
そんな条件で競争に勝つには、新しい手法なんか使ってられない
要はCPUパワーがあれば人間が楽できるという話なので、楽せずに安く作る

243:デフォルトの名無しさん
22/12/20 21:30:58.08 6VqZ94+90.net
>>236
それ名前の衝突問題しか解決しないよね…

244:デフォルトの名無しさん
22/12/20 21:33:33.15 z0lLMPAj0.net
30代Pythonクソチョン男は強姦魔の犯罪者!
あなたの近くにいます!
父母と祖父母の戸籍謄本を提出させましょう!

245:デフォルトの名無しさん
22/12/20 22:21:22.22 3CIih5oL0.net
chatGPTにfactory methodわかんねーからどういう感じなのか教えてくれやって聞いた
ロボ「こういう感じやで猿野郎」
ぼく「ほげ」
class Product:
__def operation(self):
____pass
class ConcreteProduct(Product):
__def operation(self):
____print("eat your banana !")
class Creator:
__def factory_method(self):
____return Product()
class ConcreteCreator(Creator):
__def factory_method(self):
____return ConcreteProduct()
def main():
__concrete_creator = ConcreteCreator()
__product = concrete_creator.factory_method()
__product.operation()
if __name__ == "__main__":
__main()

246:デフォルトの名無しさん
22/12/20 22:25:24.04 2TJ1ocPA0.net
純粋ソフト屋さんにVerilogとか書かせたら発狂しそうw

247:デフォルトの名無しさん
22/12/21 10:58:23.40 61VlK0r/d.net
組み込みソフト屋のソフトが汚いのは、ハードのテスト用にチョチョっと書いたのをそのまま使うから。ソースは俺

248:デフォルトの名無しさん
22/12/21 11:01:33.58 LOXcnIHB0.net
たまにお客を呼ぶようにすると、部屋を片付けるようになる

249:デフォルトの名無しさん
22/12/21 12:43:02.37 fQLbrXbN0.net
>>245
その理屈で機械学習屋やデータサイエンティストのコードも汚い、というかプロダクションレベルではないことが多いわな

250:デフォルトの名無しさん
22/12/21 13:10:09.14 uJxDCyvm0.net
自分でケツ拭くなら別にいいよ
その点、機械学習屋やデータサイエンティストはだいたい責任取らずに逃げるからタチが悪い
組み込み屋はいかにクソでも最低限のプロ意識と責任感はある奴が多い

251:デフォルトの名無しさん
22/12/21 13:17:21.01 M5sZwq5J0.net
機械学習屋のコードが1番きついわ
他の分野はまだ歴史があるからそれなりにコードは綺麗に書くという文化が浸透しているけど
機械学習の分野についてはバッチジョブだし
面倒なコードはフレームワーク側が持ってるから
ユーザーがグチャグチャのコードを書きがち

252:デフォルトの名無しさん (ワッチョイ 6666-Jn8R)
22/12/21 13:48:59.56 RDg+NYLG0.net
サンプルがおかしい
世の中のソフトの大半はwebか金融だろ

253:デフォルトの名無しさん (ワンミングク MM36-Mwb3)
22/12/21 13:50:28.08 yiozSUofM.net
どうせ使い回さないのに綺麗に書く意味

254:デフォルトの名無しさん (ガックシ 06e6-7E/c)
22/12/21 13:55:34.79 KT7+MN136.net
機械学習はもうyamlでやる時代

255:デフォルトの名無しさん
22/12/21 23:00:50.73 dTgA3nGq0.net
>>245
ハードのテストが一番大事だもんね、仕様通りになってるかはソフト書かないとわかんないし
>>247
機械学習屋はともかくデータサイエンティストはサイエンティストだからプロダクションレベルを要求しても仕方ないと思うな
Jupyterでrestart and run all cellで動くだけマシといえよう
職能が違うのよ。普通のプロダクションコードのソフトメインで組み込みとデータサイエンスちょっとやったことある自分はそう思う。
どこに時間かけてるかが違う。憎み合うのは非生産的なのでやめましょう、相互理解しましょうって思っちゃう。

256:デフォルトの名無しさん (ブーイモ MM17-Z1hy)
22/12/22 04:33:23.99 NfOs0lsnM.net
Web屋は仕様書を書くという習慣がないから
データサイエンティストなどという詐欺師と同じw

257:デフォルトの名無しさん
22/12/22 08:44:45.20 YRfbWBEUM.net
Pythonに出�


258:�って、自分がC言語に挫折した理由がやっとわかった 俺らがPythonで空気のように使っているリスト・タプル・辞書 これらがCにはないので、処理ロジックを書く前にまず これらに相当するデータ構造を配列・ポインタを駆使して実現しなくてはならない 多くのC入門者はここで挫折してしまう C言語に20年挑んでハローワールドから一歩も進めなかった男の悔恨



259:デフォルトの名無しさん
22/12/22 09:18:43.62 dL3lthyL0.net
リスト、タプル、辞書程度を実装できないレベルならどっちにしろどこかで挫折してただろ...

260:デフォルトの名無しさん
22/12/22 09:31:03.41 LbQSD5ER0.net
辞書はどうやって作ったらいいか未だに判らない
awkの連想配列が魔法に見えた

261:デフォルトの名無しさん
22/12/22 09:41:13.34 hTl9WjWG0.net
>>256
そこで挫折するって言ってるのに、その先のどっかで挫折するってなんか意味あるコメントなのか?
>>255 の言いたいことは分かる気がする
python知れてよかったな

262:デフォルトの名無しさん
22/12/22 09:44:49.77 LbQSD5ER0.net
みんなが同じようなことをやるなら誰が代表してやればいい
言語に仕様として持たせたり、関数をライブラリにしたり、モジュールを作ったり、
サンプルプログラムを流用したり
AIに書いて貰ったり ←今ここ

263:デフォルトの名無しさん
22/12/22 10:34:47.44 dL3lthyL0.net
>>258
Cに挫折した理由が
> リスト・タプル・辞書これらがCにはない
じゃないってこと
てかこの程度の文章も理解出来ないとかヤバくね?

264:デフォルトの名無しさん
22/12/22 10:38:02.07 O2u0DCiFd.net
Pythonに慣れるとCでcsvファイル読み込むだけでも面倒臭く感じるな

265:デフォルトの名無しさん
22/12/22 10:44:11.72 jksouGkc0.net
>>260

266:デフォルトの名無しさん
22/12/22 10:49:10.26 hTl9WjWG0.net
>>260
挫折した理由は下が出来なかったからだぞ?
> これらに相当するデータ構造を配列・ポインタを駆使して実現しなくてはならない
これが実現できなきゃ先にどうやって進むんだ?

267:デフォルトの名無しさん
22/12/22 10:55:23.14 N0yJkasM0.net
構造体の配列でいいのでは

268:デフォルトの名無しさん
22/12/22 11:01:24.77 smn+2blz0.net
オートマにばかり乗ってると、マニュアル車の運転が出来なくなる

269:デフォルトの名無しさん
22/12/22 11:06:25.86 LbQSD5ER0.net
結局は言語ではなくて、データ構造とアルゴリズムの理解なんだよな
昔はみんなが知ってるべき知識だったけど、どんどん知らなくても使えるようになってきた

270:デフォルトの名無しさん
22/12/22 11:06:39.49 jksouGkc0.net
>>264
タプルならね
リストだとデータをメタにする必要あるし
辞書はツリーやハッシュマップも必要で
共通して動的なメモリ管理がつきまとう

271:デフォルトの名無しさん
22/12/22 11:11:21.58 dL3lthyL0.net
>>263
そんなのググれば実装例あるからまずはそのまま使えばいいだろ
そんな知恵もないレベルならそりゃそこで挫折するわなw

272:デフォルトの名無しさん
22/12/22 11:13:23.55 smn+2blz0.net
頭は筋肉と同じで、使わないと退化する

273:デフォルトの名無しさん
22/12/22 11:24:11.50 mRMrFGRVM.net
30代Pythonクソチョン男は強姦魔の犯罪者!
あなたの近くにいます!
父母と祖父母の戸籍謄本を提出させましょう!

274:デフォルトの名無しさん
22/12/22 11:27:48.27 fdccbL2R0.net
>>268
なんかかわいそうな人 バイバイ

275:デフォルトの名無しさん
22/12/22 12:08:33.90 smn+2blz0.net
知恵のないプログラマって、使い物にならないが
いるんだな、そういうのが

276:デフォルトの名無しさん
22/12/22 12:10:33.74 dL3lthyL0.net
>>271
そんなレスしか出来ないなら黙ってなよ...
そっちのほうがかわいそうすぎるわw

277:デフォルトの名無しさん
22/12/22 12:23:21.69 eLm5edyfd.net
挫折した理由がわからないからなのか車輪の再発明に嫌気がさしたからなのかで違う

278:デフォルトの名無しさん
22/12/22 12:25:09.82 smn+2blz0.net
適性がないと思う

279:デフォルトの名無しさん
22/12/22 12:29:33.73 Z8BCtWeu0.net
マウントおじさんは今日も元気だなぁ

280:デフォルトの名無しさん
22/12/22 18:06:39.79 mFK9O5hM0.net
>>261
学生の時、CとJava覚えて
Cで基本情報処理取ったけど
Python知ってから、家でPythonしか使ってないけど
一般的なプログラマーじゃないから会社でそういう言語を使うことはないけども
資料の自動化云々、家のラズパイ、仮想通貨関係とか
Pythonしか使ってない

281:デフォルトの名無しさん
22/12/22 18:20:13.15 indjkH6A0.net
けど
けど
けども
使ってない

282:デフォルトの名無しさん
22/12/22 18:47:57.98 mFK9O5hM0.net
>>278
やめろ!5chだぞ
お前、絶対面白くない奴だろう
君が求める完成形の文章は絶対に面白くない

283:デフォルトの名無しさん
22/12/22 19:03:24.41 dbqZG8bb0.net
簡単に書けるレベルのものしかやったことないけど、プログラマとしての欲求が満たせて自分は満足している
簡単なものしか書けないレベルっていうのが本質的なんだろう

284:デフォルトの名無しさん
22/12/22 19:07:06.14 smn+2blz0.net
人の揚げ足取りが一番つまらない奴

285:デフォルトの名無しさん
22/12/22 19:09:04.98 smn+2blz0.net
普通は簡単に書けるレベルをやるので十分なんだよ
自分がやってることをできるだけ手間掛けないで済むようにすることから始める
簡単に書けないことは、それで飯を食おうと思ったときにやれば良い

286:デフォルトの名無しさん
22/12/22 19:19:51.34 gXKKQs6i0.net
>>281
人格攻撃もどっこいじゃない?

287:デフォルトの名無しさん
22/12/22 19:25:45.86 smn+2blz0.net
技術板なんだから、お互いの技術向上と切磋琢磨で活用したい
多少のちゃちゃ入れはいいかもしれんが、

288:デフォルトの名無しさん
22/12/22 19:33:35.57 pS7gMn7x0.net
Cはプログラマを信用してるから最小設計ポインタドーン!

289:デフォルトの名無しさん
22/12/22 19:36:06.08 mFK9O5hM0.net
この流れで「どっこいどっこい」じゃなくて「どっこい」で来るのか、、、
なるほどね

290:デフォルトの名無しさん
22/12/22 20:01:31.68 gat4VRlWM.net
どすこいじゃなくて良かったじゃん

291:デフォルトの名無しさん
22/12/22 20:08:02.26 YRfbWBEUM.net
まあまあ喧嘩せんでくれ
自分はCに致命的に向いてないんだろう
例えば、20年Cに挑んでどうしても理解できなかったのがポインタのポインタ
**argvがわからないのでコマンドライン引数を使うアプリが作れず挫折
実はPythonにも*と**があって絶望しかかったのだけど、これはPythonを使う上で必須ではないようでセーフ

292:デフォルトの名無しさん
22/12/22 20:13:27.78 LbQSD5ER0.net
あれは結局言語仕様がおかしいんだよな
Cで書く人はみんなargvを憎んでいる

293:デフォルトの名無しさん
22/12/22 20:29:10.73 N0yJkasM0.net
アンカーだけのレス
へのアンカーなら分かるだろ

294:デフォルトの名無しさん
22/12/22 20:50:41.85 PKP5vjg/0.net
>>286
この流れで揚げ足取れるのが凄いわ
どっこいどっこいの略とまで書かないと理解できないとも思わなかった
ごめんね

295:デフォルトの名無しさん
22/12/22 21:05:30.63 mFK9O5hM0.net
>>291
なぜ「どっこい」のレスで切らんかったの?
あそこで切ったら、ある意味勝ちだったのに
そういうとこだよね

296:デフォルトの名無しさん
22/12/22 21:22:01.08 dL3lthyL0.net
>>288
> **argvがわからないのでコマンドライン引数を使うアプリが作れず挫折
それchar *argv[ ]って書けば多少理解し易い
要するに文字列(char *)の配列だから

297:デフォルトの名無しさん
22/12/22 21:34:51.38 oY+OEcI00.net
>>292
なぜ?勝ち負けを求めてるわけじゃないから
もしかしてレスにいちいち勝ちを求めてるの?疲れない?

298:デフォルトの名無しさん
22/12/22 21:36:57.96 dL3lthyL0.net
↑ どう見ても負けず嫌いw

299:デフォルトの名無しさん
22/12/22 21:52:19.67 LbQSD5ER0.net
プログラミングのハードルが下がったなと実感する瞬間である

300:デフォルトの名無しさん
22/12/22 22:02:44.58 mFK9O5hM0.net
>>294
つまらないレスをする人って
それがわからないからつまらないレスをする訳だが
その人がレスを続けたところで当然内容はつまらない
せっかくそこそこ面白いのを出したんだから
面白い状態で終わらせとけばいいのにと思って
「やっぱりつまらないよねー」で終わっちゃったよね

301:デフォルトの名無しさん
22/12/22 22:05:02.75 c+J4V8f90.net
#include <stdio.h>をおまじないって説明すると馬鹿にされるけどさ
Cの入門書なんかで#include <stdio.h>を「今はとりあえず、おまじないと思っておいてください」みたいな説明してるとマニアックな人から糞本扱いされるけど、じゃどんな説明するのが正解なんだろうか。
hello worldを書いてる初心者に、プロトタイプとかマクロとかから説明するのだろうか。
なぜプロトタイプみたいのが必要かって言うと、printf()は分割コンパイルでライブラリというものに入っていて……とか初心者が納得のいくまで説明をしなきゃならないのか。
「stdio.hというファイルにprintf()を使うための情報が入っているのでそれを取り込む命令です。詳しいことはおいおいわかりす」って簡単に説明するなら「今はおまじないとおもっていてください」と大差ないし。
バシッと納得のいく説明の例を教えてほしい。

302:デフォルトの名無しさん
22/12/22 22:07:40.99 smn+2blz0.net
ハードル下がってプログラマ人口が増えると良いね

303:デフォルトの名無しさん
22/12/22 22:24:53.66 LbQSD5ER0.net
論理的に考えられる人が増えたらいいとは思う

304:デフォルトの名無しさん
22/12/22 23:02:38.79 TDhKeJEe0.net
>>297
面白いレスサンキュー

305:デフォルトの名無しさん
22/12/23 08:01:48.05 Xg/JPq4Q0.net
>>298
外部の読み込むのがinclude
stdio.hを読み込むとprintfのような基本的な関数が使えるようになる
くらいの説明なら初心者でも分かるんじゃない

306:デフォルトの名無しさん
22/12/23 08:14:41.70 Z/1nZoBr0.net
実際にはプロトタイピングしているだけなので、includeしなくてもexternしてしまえば使える

307:デフォルトの名無しさん
22/12/25 15:05:08.45 szxk8o6ud.net
>>298
糞本扱いする人が糞だということにすれば問題なし

308:デフォルトの名無しさん
22/12/25 15:48:44.62 itz3wrzY0.net
おまじないがダメなら料理に例えようw

309:デフォルトの名無しさん
22/12/25 21:04:49.84 UDG4tDm5.net
バリデーション管理しやすくかつクラスを普通の関数のように扱いたいのですがどうしたら良いでしょか・・
用途はありませんが試しに足し算するだけのクラスを実装してみました

from typing import Optional
from pydantic import BaseModel

class _Sum(BaseModel):
a: int
b: int
def sum(self):
return self.a+self.b

#sum()を使うまでに段階を踏んでしまう
Sum=_Sum(a=3,b=3)
print(Sum.sum())
#sum(2,3)のように使いたい

#やりたいことは↓こんな感じで、自分で作ってみました
URLリンク(ideone.com)
後々に”偶数しかダメ”とかsum09自体を拡張したりとかしたいです

310:デフォルトの名無しさん
22/12/25 21:37:54.73 ZZol25Zb0.net
>>306
_Sumクラスのインスタンス生成時に型とかチェックしたい内容だけ渡すようにして、sumの中でそのチェックをするとか

311:デフォルトの名無しさん
22/12/25 23:13:02.03 ICQtDf1md.net
「普通の関数だと拡張性が弱まる」の意味がわからん
普通の関数のようにクラスのインスタンス化と特定のメソッドの呼び出しを実行できたとして、
そのインスタンスに後でアクセスする方法はないのだから関数ではなくクラスであることに何の意味もない
引数をバリデーションしたいだけなら、普通に引数に渡された値が条件を満たしていなければエラーを投げる関数を作って関数の先頭で普通に呼べばよい
アノテーションとタイプ数変わらないだろ

312:デフォルトの名無しさん
22/12/25 23:24:11.94 ICQtDf1md.net
あと、単に関数の処理としてクラスに実装された機能を利用したいということであれば、関数の中でそのクラスのインスタンスを作って目当てのメソッドを呼べばいいだけだ
トリッキーな仕掛けなど何一つとして必要ない

313:デフォルトの名無しさん
22/12/25 23:32:47.68 B6BX6vu/0.net
逆説だけど同一だからって関数内で関数呼ぶならデコレータの存在意義ないやん
コードの理解を和らげるためにあるんで

314:デフォルトの名無しさん
22/12/25 23:41:27.55 UDG4tDm5.net
>>308
ちなみに>エラーを投げる関数を作って
的なのを実装するとどういう感じになりますか?
少し前に自分でやったのはかなり簡略しますがこんな感じになりました
def must_be_int(n):
 if type(n) is not int:
  raise TypeError(f"type error:'{n}' is not int")
 return n
def sum(a:int,b:int) -> int:
 return must_be_int(a)+must_be_int(b)
print( sum(2,3) )
print( sum(2,"3") )
ただこれだとsum関数のロジック

315:デフォルトの名無しさん
22/12/25 23:43:25.19 UDG4tDm5.net
途中でした
ただこれだとsum関数のロジック内にチェックする関数が混在してくるので分けたいなと思い
must_be_int(a)
must_be_int(b)
return a+b
にしたりと、なんかしっくりこなくて・・

316:デフォルトの名無しさん
22/12/25 23:48:37.78 UDG4tDm5.net
ようは、
def sum(a:int,b:int) --> int:
このアノテーションだけでint以外の入ってきたらエラー吐いてくれればいいのに・・
みたいな

317:デフォルトの名無しさん
22/12/26 00:38:14.71 ZJD8d3IcM.net
それはtype checkerの仕事やろ

318:デフォルトの名無しさん
22/12/26 00:54:00.05 3Zc3mIaMM.net
>>308
> そのインスタンスに後でアクセスする方法はないのだから
これどういう意味なの?
インスタンスに後でアクセスする方法あると思うのだけど

319:デフォルトの名無しさん
22/12/26 13:49:23.62 6bMfB0bxa.net
>>306
URLリンク(ideone.com)
class sum(object):
def __call__(self, a, b):
self.a, self.b = a, b
return self.a + self.b
print(sum()(2, 3))

320:デフォルトの名無しさん
22/12/26 15:23:10.53 Z9xA6Bih0.net
>>306
普通に関数で実装してバリデーション用のデコレータ作れば?
def must_be_int(func):
__def _validate(*args):
____assert all(isinstance(x, int) for x in args), "all arguments must be integer"
____return func(*args)
__return _validate
def must_be_even(func):
__def _validate(*args):
__assert all(x % 2 == 0 for x in args), "all arguments must be even number"
____return func(*args)
__return _validate
@must_be_even
@must_be_int
def _sum(a, b):
__return a+b
print(_sum(2, 2))
print(_sum(1, 3)) # error
print(_sum(1.5, 2.5)) # error

321:デフォルトの名無しさん
22/12/26 19:13:28.11 271e9Qy4.net
>>316,317
ありがとうございます
実は__call__つかった方も関数の方(>306のコメントアウトに書いてあるように(ただ、args[1:]の部分が合わないのでバリデーションの部分は意図的に省いて書いてます))も
どちらもやっていたのですが諦めていました
ひとつは、(おま環なのかエディタの設定なのか)今度はアノテーションの方がなぜかデコレーターの方が優先されちゃって表示されて諦めたのと
もうひとつは、今回のような試しにやってみた足し算のみの用途なしな機能だけではない場合、
関数の方だと後々に拡張したいってなったときに難しそうだなと思い諦めました

322:デフォルトの名無しさん
22/12/26 22:18:46.52 IvZMxVOoM.net
30代Pythonクソチョン男は強姦魔の犯罪者!
あなたの近くにいます!
父母と祖父母の戸籍謄本を提出させましょう!

323:デフォルトの名無しさん
22/12/28 11:04:27.64 JTGZh46Y0.net
止まってる車に60キロで走ってきた車がぶつかったら、中の人が受ける衝撃ってどっちの車も同じなんだっけ?

324:デフォルトの名無しさん
22/12/28 11:04:43.39 JTGZh46Y0.net
あ、スレ違いですね。忘れてください

325:デフォルトの名無しさん
22/12/28 12:07:11.51 L0e9GMVm0.net
>>320
同じではない
軽自動車とトレーラーなんか考えてみたらわかるけど、作用反作用の法則で同じ力が軽自動車とトレーラーにかかるけど、軽自動車は潰された後完全にトレーラーに張り付く形で進み、トレーラーはわずかにしか減速しない
よって中の人の衝撃は全然違う
塑性変形で弾性衝突じゃないからそうなると思うかもしれないが、完全弾性衝突の場合だと軽い方が思いっきり跳ね返るだけね。よく跳ねるボールの中にいる人と、地下室の中にいる(地球という大きいボールのなかにいる)人を考えてもいいかも
要は同じ運動量が交換されるが、同じ運動量でも質量が違えば加速度は違うということだね

326:デフォルトの名無しさん
22/12/29 11:07:07.82 jCj0trE4a.net
>>318
URLリンク(www.youtube.com)

327:デフォルトの名無しさん
22/12/29 15:42:32.28 NCBV9Sb6M.net
>>323
動画のクオリティ高くてビビったw

328:デフォルトの名無しさん
22/12/29 19:35:56.88 RiMtnxAm0.net
pythonのバージョン管理ってアナコンダがいいの?
俺ドッカーしか知らんかったからずっとドッカーのこと調べてたんだが

329:デフォルトの名無しさん
22/12/29 19:36:47.55 RiMtnxAm0.net
あとpythonの開発環境って3.8が多いみたいなんだけど理由あるの?

330:デフォルトの名無しさん
22/12/29 19:59:01.94 Y8X+93cs0.net
>>325
公式で配布してるインストーラ

331:デフォルトの名無しさん
22/12/29 22:26:07.07 Y8X+93cs0.net
実行環境の話?

332:デフォルトの名無しさん
22/12/29 22:41:36.15 JTFuHtDdr.net
>>325
ケースバイケースかなぁ
機械学習やるならanacondaはオススメだよ
クラウド連携はanacondaは偶にトラブルになる
環境隔離したいならdockerは良いけど別にdockerでなくてもよい
最近はpipenvやpoetryでディレクトリごとに環境を分離してもいいかな
いろいろ増えすぎて初心者にはコレっていうのが難しい
そんなときは公式のPythonに戻る

333:デフォルトの名無しさん
22/12/29 22:52:19.17 JTFuHtDdr.net
>>326
そういえば何か作るときは3.8を使うことが多いなぁ
特に理由はないけど、3.9以降の使いたい機能は様子見
あとRedhat系列だと3.9以降をインストールするのが面倒くさいのもある
3.8ならSCL使えばさっくりインストールされる
Anaconda使えばいいけどあれはあれでバイナリごとインストールすることになるからなんだかなぁ

334:デフォルトの名無しさん (ワッチョイ 07cf-4Ar3)
22/12/29 23:01:15.14 hdgfZ7yf0.net
Anaconda で動かすツール使ってる

335:デフォルトの名無しさん (ワッチョイ 61f0-K5v2)
22/12/29 23:03:16.65 3S86hTSK0.net
pythonは言語仕様は簡単だけど実行環境の管理が完全に終わってるよね
linuxの知識ないとサーバーサイドでまず使いこなせない
下手したら環境ぶっ壊して「何もしてないのに壊れた」状態が生まれる

336:デフォルトの名無しさん (ワッチョイ 3f93-SwB0)
22/12/29 23:05:37.12 XUilgIKr0.net
だからk8sなんかが流行ってるんでしょ

337:デフォルトの名無しさん
22/12/30 00:23:52.63 i/Imw4oH0.net
何もしなかったから壊れたということを知るべき。

338:デフォルトの名無しさん
22/12/30 05:59:51.50 uddbjkCB0.net
>>327-330
大変勉強になりました
お三方にいただいたアドバイスをもとに
これから検討いたします!

339:デフォルトの名無しさん
22/12/30 08:21:58.84 DzZqzBlm0.net
PythonってVisual Studio のCodeの方じゃなくてCoreの方にも入ってるよね
いつもVB.NetやC#で使ってるからそっち使ってるわ。

340:デフォルトの名無しさん
22/12/30 11:56:52.21 KypYNh+sp.net
デコレータって関数受けて関数返せばデコレータと言っていいの?
それとも機能の追加が出来れば関数返さなくてもいいの?
デコレータの例が全部ラップしてるから関数返すものをデコレータっていうのかと思ったけど、Pythonの構文的には機能の追加が要件ぽくてよくわからん

341:デフォルトの名無しさん
22/12/30 12:18:32.93 +LXrKtXS0.net
それは高階関数かな

342:デフォルトの名無しさん
22/12/30 12:32:28.57 EYlolZ9wp.net
>>338
def deco (fn):
print("Good")
fn()
print("Good")
↑の関数は高階関数と言えるし、デコレータとも言える?

343:デフォルトの名無しさん
22/12/30 12:34:35.19 6lQGRZJ+d.net
>>339
デコレータとは、@decoの形で使用されることを想定している関数
ただそれだけのこと

344:デフォルトの名無しさん
22/12/30 12:39:12.89 EYlolZ9wp.net
>>340
def deco (fn):
print("Good")
fn()
print("Good")
と↑をラップした↓
def outer (fn):
def deco ():
print("Good")
fn()
print("Good")
return deco
だとそれぞれどういうメリットデメリットが想定できる?
この程度だったら何も変わらない?

345:デフォルトの名無しさん
22/12/30 14:25:39.66 v4ysyuF5a.net
>>341
前者はデコレータとして使用できない
後者は使用できる
それだけのこと

346:デフォルトの名無しさん
22/12/30 14:30:10.80 CAw5d3+3p.net
>>342
前者もデコレータとして使えるよ?
@decoで使うってことだよね?

347:デフォルトの名無しさん
22/12/30 21:59:47.08 i0HtXYTfp.net
>>343
自己解決しました

348:デフォルトの名無しさん
22/12/30 22:26:59.27 XgQsZPRMM.net
自己解決とは一体・・・ww

349:デフォルトの名無しさん
22/12/31 00:05:03.98 Y1CGuIqUp.net
>>345
自分のわかっていないところがわかりました

350:デフォルトの名無しさん
22/12/31 00:20:01.24 E+Koymh80.net
replitのpythonテンプレートを使っているのですが、実行すると勝手にパッケージをインストールしたりします。これを止める事は出来ますか?

351:デフォルトの名無しさん
22/12/31 00:20:01.95 E+Koymh80.net
replitのpythonテンプレートを使っているのですが、実行すると勝手にパッケージをインストールしたりします。これを止める事は出来ますか?

352:デフォルトの名無しさん
22/12/31 14:58:09.42 iYLc9PIz.net
main.pyのソースを見たときに
import ○○ #upm package(パッケージ名)
の行のコメントアウト外すと消えるかも>>348

353:デフォルトの名無しさん
23/01/01 18:58:07.86 QkrDyXxA0.net
ワークマンの売上高は10年で2.6倍 好調の背景に何があるのか
www.itmedia.co.jp/business/articles/2301/01/news011.html
ワークマンpythonらしいぞ
まーそうなるわな

354:デフォルトの名無しさん
23/01/01 19:36:11.17 ps54Dm7d0.net
スレチだけど...
> KPIを達成しても売り上げが伸びない場合、社員ではなく経営の責任ということになります。
> 『会社がやれと言った内容がそもそも間違っていたんだね』ということで
まあインタビュー記事だからいくつか盛ってるとは思うけどこれがそれなりでも浸透してるなら確かに強いと思うわ

355:デフォルトの名無しさん
23/01/01 21:38:32.18 OSWb6iEUM.net
>>350
ぶっちゃけ一番安上がりだからじゃね?

356:デフォルトの名無しさん (ワッチョイ 9a7d-hX/W)
23/01/01 22:00:13.33 UVAQFgfk0.net
ちょっと前のすれにtypecheckerが出てたけど、
仕事で静的型付けって意識してる?
Dropboxが静的型付け使って開発してるぜ~っていう記事を
ちょうど見かけたもんで。
URLリンク(navi.dropbox.jp)

357:デフォルトの名無しさん
23/01/01 22:16:25.00 2lDDSA+U0.net
実際には型が動的で有り難いことは殆どなくて、大抵は決まったものしか入らない
だからこそ型なんか書かなくていい、という思想な気がする

358:デフォルトの名無しさん
23/01/01 22:41:34.82 65g2Zgvwd.net
>>353
typing hint(+dats class) 、mypyももちろんオン。会社など複数人が関わるプロジェクトね。一人なら好きにやれば良い

359:デフォルトの名無しさん
23/01/02 12:12:57.71 XEDAh58aa.net
Windows環境で、「アプリと機能」の一覧に表示されるソフトウェア名一覧をPythonから取得するにはどうしたら良いですか??
URLリンク(tadaup.jp)

360:デフォルトの名無しさん
23/01/02 12:15:15.36 a90VB+UOd.net
レジストリ読む

361:デフォルトの名無しさん
23/01/02 14:11:49.16 VCjQSWZY0.net
WMI

362:デフォルトの名無しさん
23/01/02 17:01:40.21 mMdAew+l0.net
ChatGPTで答えさせて3つ出したコードのうちwmic使ったものを手直ししてみた
デコードをutf-8だったのをcp932にしたり文字列の整形あたりを改変しなきゃだったけどこういうとき結構良い答え持ってくる
Windows環境で、「アプリと機能」の一覧に表示されるソフトウェア名一覧をPythonから取得するにはどうしたら良いですか??
Windowsで「アプリと機能」の一覧を取得するには、次のような方法があります。
wmic コマンドを使用する
Windows Management Instrumentation (WMI) を使用する
PowerShell を使用する
以下は、いずれの方法もPythonから実行するための例を示します。
import subprocess
result = subprocess.run(['wmic', 'product', 'get', 'name'], stdout=subprocess.PIPE)
output = result.stdout.decode('cp932')
applications = [line.strip() for line in output.split('\n')]
for app in applications:
print(app)

363:デフォルトの名無しさん
23/01/02 19:23:19.67 gNyrLSWLd.net
>>359
すごい!ありがとうございます!

364:デフォルトの名無しさん
23/01/02 19:38:51.68 qfqFAF6wa.net
>>359
サンプルが少ないからほぼ直コピペなんだろうな

365:デフォルトの名無しさん (ワッチョイ 9733-QAWg)
23/01/02 20:50:28.36 xWUsdzOR0.net
自演はいいって

366:デフォルトの名無しさん (ワンミングク MM8a-+uJR)
23/01/02 21:06:38.35 gHhSLzFgM.net
すごくいいです

367:デフォルトの名無しさん (ワッチョイ 0754-i7z+)
23/01/02 21:08:42.90 9G/14EFS0.net
subprocessの書き方古くない?

368:デフォルトの名無しさん (ワッチョイ 9733-QAWg)
23/01/02 21:18:09.07 xWUsdzOR0.net
いやrunは新しいAPIだよ

369:デフォルトの名無しさん (ワッチョイ 0754-i7z+)
23/01/02 21:20:08.80 9G/14EFS0.net
cmdを起動せずにリストを渡すのと、cmdにコマンドの文字列渡すやり方があるよね

370:デフォルトの名無しさん
23/01/02 21:30:45.62 xWUsdzOR0.net
文字列渡すパターンは危険だからね
チェックをちゃんとしないと予期せぬコマンドが実行される
shell=Trueしてると特にやばい

371:デフォルトの名無しさん
23/01/02 21:32:02.96 9G/14EFS0.net
別にリストでも変わらないと思うけど
面倒なだけで

372:デフォルトの名無しさん
23/01/02 21:36:28.26 1k7qyNCA0.net
>>364
新しい書き方教えて

373:デフォルトの名無しさん
23/01/02 21:38:52.52 9G/14EFS0.net
時系列はよく知らんけど、リストで渡す方法がまずあって、
不便だからと文字列の方法が追加されたんじゃないの?

374:デフォルトの名無しさん
23/01/02 22:12:07.01 65aHjL4I0.net
shlex.split("date +%a")
# -> ["date", "+%a"]
run に渡すリストはこうやって作ると便利だよ (´・ω・`)

375:デフォルトの名無しさん
23/01/02 22:23:15.59 9G/14EFS0.net
普通にf文字列がいい

376:デフォルトの名無しさん
23/01/02 22:47:14.11 +OShonpv0.net
ModuleNotFoundError: No module named 'xml.etree'; 'xml' is not a package
ElementTreeでXMLを作成すると上のエラーがどうしても出てしまいます。
ElementTree以外にXMLがいじれるのって何がいいですか?
BeautifulSoupですか?

377:デフォルトの名無しさん
23/01/02 23:55:25.20 VCjQSWZY0.net
xml.pyかxmlなディレクトリがあるんちゃうか
ググっても同じこと書いてる記事多数

378:デフォルトの名無しさん
23/01/03 00:26:25.58 o2Yi6Z0r0.net
>>374
レスありがとうです。その記事を見て確認したんですけど特に問題はなく、それ以外の解決法も見当たらずでお手上げ状態です


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch