1 名前:デフォルトの名無しさん [2023/07/13(木) 18:48:41.56 ID:INS7SIu4.net] 当スレに★Python以外のプログラミング言語での回答類を書くべからず★ 派生言語はそれぞれ専スレがある(この板にあるとは限らない)ので、そっち池。 「Ruby」「Rails」「某言語では」「クソチョンw」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。 このスレッドは「お勉強」スレのほうには書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を、勇気を持って書き込むスレッドです。 へび使いが優しくコメントを返しますので、お礼は Python の布教と初心者の救済をお願いします。 ★エラーを解決したい場合★は、 表示されたエラーの全文(勝手に省略やスクショうp等の横着クソ行為禁止)と、 実行環境(Pythonのバージョン・OSとIDEの種類およびバージョン)をシッカリ書くこと。 Pythonの★ソースコードをそのまま5ちゃんに貼るとインデントが崩れてチヌ★ 【【【複数の連続半角スペースはなにもなかったことにされる&タブは普通には入れられない】】】掲示板の仕様なので、 プログラム文は↓等の、いわゆるコードうp用サイトに貼ってこいください。 ttps://techiedelight.com/compiler/ Run Code機能あり。 ttp://ideone.com/ デフォ設定はC用のため、言語選択ボタン押下がピコ手間かも。 ttp://codepad.org/ ほぼ直感的に使える。Run codeボタンあり。 ttp://pastebin.com/ まずまずシンプル。 ttp://dpaste.com/ とてもシンプル。消えるまでの日数は十分長ーく指定のこと。 ◇Python公式◇ www.python.org/ ◇まとめwiki◇ ttp://python.rdy.jp/wiki.cgi 〇前スレ〇 【まず1嫁】くだすれPython(超初心者用) その58 https://mevius.5ch.net/test/read.cgi/tech/1662514433/ 次スレたては >>985 あたりが挑戦する。 ### END OF TEMPLATE ###
641 名前:デフォルトの名無しさん mailto:sage [2024/06/07(金) 12:09:55.41 ID:dEUVRqD7.net] pythonのパッケージマネージャーはいくつ出れば気が済むのか(´・ω・`)
642 名前:デフォルトの名無しさん [2024/06/07(金) 12:34:41.54 ID:q6BY+Kco.net] 幾つのパッケージマネージャが出れば、君は Pythonをまともな言語と呼ぶのか。 友よ、その答は風に吹かれている。
643 名前:デフォルトの名無しさん mailto:sage [2024/06/07(金) 12:49:10.90 ID:XsPkgKWU.net] PythonでのYAMLの処理で教えてください groupA: image: sampleA0.jpg section: - section1: aaa: 0 bbb: 0 - section2: bbb: 2 aaa: 1 image: sampleA2.jpg groupB: section: - section1: aaa: 123 - section2: image: sampleB1.jpg こんな感じのYAMLファイルがありまして、「image」キーを持つものの 最上位からの要素を得たいと思ってます 出力のイメージとしては、こんな感じです groupA: image: sampleA0.jpg groupA: section: - section1: image: sampleA2.jpg groupB: section: - section2: image: sampleB2.jpg 他にも、aaaやbbbのキーでも同様なことをしたいです なにかよい対応方法はありますか
644 名前:デフォルトの名無しさん [2024/06/07(金) 14:49:41.59 ID:SXd2mcAV.net] groupA: image: sampleA0.jpg groupA: section: - section2: image: sampleA2.jpg groupB: section: - section2: image: sampleB2.jpg にならない理由は?
645 名前:デフォルトの名無しさん mailto:sage [2024/06/07(金) 15:25:32.07 ID:U/LNotLd.net] いっぱいあるXPath相当がつかえるモジュールでもつかえば? YAML用じゃなくてもDict向けのでもいい
646 名前:デフォルトの名無しさん mailto:sage [2024/06/07(金) 16:31:15.75 ID:Z4LBLF5E.net] Python はvenv、Ruby はrbenv、Node.js はnvm など、 各言語で異なるバージョンマネージャーを使う香具師は素人。 すべて使い方が異なるだろ プロは少なくとも数言語を使うから、 多言語バージョンマネージャーで使い方を統一する Linux のローカル開発なら、Docker を使うのが簡単だが、 日本人が作った、多言語バージョンマネージャーのanyenv で、rbenv, nodenv も使える。 pyenv も同様。 asdf でも、多言語の好みのバージョンを入れられる
647 名前:デフォルトの名無しさん mailto:sage [2024/06/07(金) 17:35:37.77 ID:wW+zlW8A.net] >>635 pyyamlとboltonsのresearchを使う 後者は再帰的な処理を自作してもいい(dictとlistで場合分け)
648 名前:デフォルトの名無しさん mailto:sage [2024/06/08(土) 00:52:57.64 ID:TvmcjMCs.net] >>633 pythonの破綻が見えてきてると俺は思う perlもcpanが腐って終わった
649 名前:デフォルトの名無しさん mailto:sage [2024/06/08(土) 00:54:05.76 ID:TvmcjMCs.net] dockerは無駄多すぎだろ さすがに
650 名前:デフォルトの名無しさん mailto:sage [2024/06/08(土) 12:49:56.73 ID:JJO/Gn8n.net] dockerがベスト vscodeのdevcontainerこそ人類がたどり着いた最高地点
651 名前:デフォルトの名無しさん mailto:sage [2024/06/08(土) 14:04:39.39 ID:pZ+rs27B.net] 俺もvscode devcontainerの組み合わせが良い気がする(´・ω・`)
652 名前:デフォルトの名無しさん mailto:sage [2024/06/08(土) 14:22:11.33 ID:3whGHUAW.net] みんなそんなdockerつかうのね
653 名前:デフォルトの名無しさん mailto:sage [2024/06/08(土) 14:41:09.17 ID:E87q1Rk2.net] デプロイまで考えるとコンテナにしとくのがシンプル
654 名前:デフォルトの名無しさん [2024/06/08(土) 14:46:38.50 ID:dTYjDoY8.net] 逆にDocker使ってない人見ると何で?って思うぐらいだよね
655 名前:デフォルトの名無しさん [2024/06/08(土) 15:29:59.02 ID:Dxs/ulLi.net] 自分でコード書いてる時間が一番幸せなんじゃ
656 名前:デフォルトの名無しさん mailto:sage [2024/06/08(土) 17:55:04.64 ID:Hlb2wDxo.net] >>644 といいかまともな開発してたらもう使うわないと環境が破綻する
657 名前:デフォルトの名無しさん [2024/06/08(土) 21:01:34.24 ID:D2c2x+th.net] そんなもんデプロイ先の環境によるだろ
658 名前:デフォルトの名無しさん mailto:sage [2024/06/08(土) 23:58:06.46 ID:gE4A0CAK.net] くだ質ですまんが教えてください Win11 + Python3.12.8 + vscode 環境で、 3 * 0.3 を計算させると8.99999...になってしまいます (期待している計算結果は0.9) 是正させるためには round(3 * 0.3 *10) / 10 をすればいいのはわかってるんですが、出来るだけコードを簡略化させたいのと、そもそも何故こんな結果になってしまうのかを出来れば知りたい、です
659 名前:デフォルトの名無しさん mailto:sage [2024/06/08(土) 23:59:19.96 ID:gE4A0CAK.net] ごめん計算結果のとこは0.899999...の間違いです
660 名前:デフォルトの名無しさん [2024/06/09(日) 00:42:23.58 ID:DuD3W8cN.net] ttps://docs.python.org/ja/3/tutorial/floatingpoint.html
661 名前:デフォルトの名無しさん [2024/06/09(日) 01:03:55.23 ID:KXbUABQj.net] デデキントの切断という話でなくて単純に整数n,mによる n/mをサポートする型がデフォルトではないから そういう有理数正確に扱える↓を使え fractions -> Rational numbers
662 名前:デフォルトの名無しさん [2024/06/09(日) 01:19:56.30 ID:KXbUABQj.net] 不動点少数は高速でメモリ消費が少ないのでpythonのデフォルト型には似合ってるよ でももし、こうした計算が頻回あるいは重要に行なわれるなら デフォルトで有理数をサポートした言語 common_lisp,R,wolfram等が良いだろう また無理数も正確に扱いたいならwolframを薦めとく。これはsin(2pi)=0を返す珍しい言語だ
663 名前:デフォルトの名無しさん mailto:sage [2024/06/09(日) 06:20:23.00 ID:zJwQQmGc.net] サンクス 言語仕様なら仕方ないか 仮想通貨の自動売買用にpythonを始めたんだけど、今のところ他の言語に切り替える考えはないっす あと調べたらdecimalってモジュールもあって、これを使ってもスッキリ書けそうね
664 名前:デフォルトの名無しさん mailto:sage [2024/06/09(日) 09:38:02.01 ID:XLDZv0sl.net] 浮動小数点数は言語仕様というと違和感があるな どの言語でもほぼ同じ問題出るだろうし
665 名前:デフォルトの名無しさん [2024/06/09(日) 09:39:22.17 ID:XLDZv0sl.net] >是正させるためには >round(3 * 0.3 *10) / 10 >をすればいいのはわかってるんですが こんなことしたらダメでしょ
666 名前:デフォルトの名無しさん mailto:sage [2024/06/09(日) 10:37:28.45 ID:0/tKVw6D.net] Decimalは使いづらいんだよね Decimal('3') * Decimal('0.3')とかいちいちやってられん
667 名前:デフォルトの名無しさん mailto:sage [2024/06/09(日) 11:41:31.33 ID:lrgfA1Gl.net] 継承と合成どちらを使うべきかと基準がよくわからんなぁ(´・ω・`)
668 名前:デフォルトの名無しさん mailto:sage [2024/06/09(日) 17:04:58.68 ID:Fa41Tv3c.net] >>658 >>> 3 * Decimal('0.3') Decimal('0.9') 演算子オーバーロードしてるから1箇所でいい >>> Decimal(3) * '0.3' TypeError: can't multiply sequence by non-int of type 'decimal.Decimal' でもこう書けないんだよな >>> Decimal(3) * 3 / 10 Decimal('0.9')
669 名前:デフォルトの名無しさん [2024/06/10(月) 15:55:09.93 ID:YXHAsqQy.net] >>> Decimal(3) * Decimal(3/10) Decimal('0.8999999999999999666933092612') だっさ
670 名前:デフォルトの名無しさん [2024/06/10(月) 16:09:43.37 ID:17x/k5Bx.net] まじか decimal だらしねーな お手本 [1]> (* 3 (/ 3 10)) 9/10
671 名前:デフォルトの名無しさん mailto:sage [2024/06/10(月) 17:41:53.13 ID:8JGo2SkV.net] >>> Decimal(3/10) Decimal('0.299999999999999988897769753748434595763683319091796875') >>> Decimal(3/10).quantize(Decimal('0.0')) Decimal('0.3') エスパーしない方針だから
672 名前:デフォルトの名無しさん mailto:sage [2024/06/10(月) 21:30:34.55 ID:RgnmhcQ5.net] >>661 クソだっさwww
673 名前:デフォルトの名無しさん mailto:sage [2024/06/11(火) 10:00:28.46 ID:ufFRRQKE.net] ↓俺の考えた最強のスマートな書式を語れ
674 名前:デフォルトの名無しさん mailto:sage [2024/06/11(火) 11:06:34.00 ID:GrH0S5VC.net] >>> Decimal('3.0') だっさpgr
675 名前:デフォルトの名無しさん [2024/06/11(火) 11:19:18.72 ID:GtLbEh/G.net] perlの2番煎じにはなるが import XXX で オーバーライドしてくれればいいね
676 名前:デフォルトの名無しさん mailto:sage [2024/06/11(火) 20:03:54.96 ID:NWbfM0Iu.net] C++プログラマーだが、 エディタは何使えばええの? Visual Studioは一応動くが…
677 名前:デフォルトの名無しさん mailto:sage [2024/06/11(火) 20:27:59.97 ID:OZZ7Wa3f.net] 汎用でつかえるのはPyCharmかVSCodeかな 用途とマッチするならJupyter/Colabもいける
678 名前:668 mailto:sage [2024/06/12(水) 08:58:44.17 ID:j9iMATnj.net] >>669 一番高機能なのはVS Codeかね? Colabが本格開発に無理なので、探してたところ。
679 名前:デフォルトの名無しさん mailto:sage [2024/06/13(木) 07:44:44.26 ID:W4hE6ovf.net] 環境を整え無くてもいいPyCharmが楽だな
680 名前:デフォルトの名無しさん mailto:sage [2024/06/13(木) 13:05:54.68 ID:vNUeXKFR.net] 会社の糞PCだとPyCharmが重いんだわ
681 名前:デフォルトの名無しさん mailto:sage [2024/06/13(木) 13:21:14.57 ID:Uc7cK+cC.net] パイチャ!
682 名前:デフォルトの名無しさん mailto:sage [2024/06/17(月) 12:06:22.09 ID:2+GH8Qi6.net] モジュールAのMainクラスがモジュールBに書いたSubクラスのインスタンスを生成する 型ヒントのためにAはBの、BはAの参照するから相互参照になっちゃうんだけど typing typechecking使えば回避できるとして これって根本的にどう作って相互参照回避すべきなんだ?
683 名前:デフォルトの名無しさん mailto:sage [2024/06/17(月) 12:17:35.59 ID:a7DQgjMw.net] シチュエーションが謎で理解できてないけど インターフェースとして上位クラスをつくる
684 名前:デフォルトの名無しさん [2024/06/17(月) 12:44:35.82 ID:laKFnUpc.net] 循環しちゃうのは速度落ちてメモリ消費してしまうけど記憶しといたのと照し合わせる手法がある
685 名前:デフォルトの名無しさん mailto:sage [2024/06/17(月) 12:50:19.30 ID:Me30jdtI.net] >>674 その状況だとBはAをインポートする必要いやろ よくあるのはtyping用のスタブモジュールを作る方法
686 名前:デフォルトの名無しさん mailto:sage [2024/06/17(月) 14:24:03.32 ID:KAevd3qc.net] >>677 A.py App() B.py Win() winがコンストラクタでsuper().__init__(app.root)するとき App渡せないとroot見えないって言われてしまう
687 名前:デフォルトの名無しさん mailto:sage [2024/06/17(月) 15:22:40.07 ID:Me30jdtI.net] >>678 その例だとWinが依存すべきなのはAppそのものじゃなく Appが継承してる型だったり実装してるインターフェースの型 tkを例にすればWinが依存するのはAppそのものじゃなくtk.Tkやtk.Widget AとBの相互依存から共通で依存する抽象度の高いCを切り出すことで AはBとCに依存、BはCに依存、CはAにもBにも依存しない形になる
688 名前:デフォルトの名無しさん mailto:sage [2024/06/18(火) 23:47:26.99 ID:l8Y5coIJ.net] >>679 仕様上サブがメインのいくつかに依存するから丸ごと渡してたけど rootと、必要な位存箇所だけ渡すようにすればいいのね
689 名前:デフォルトの名無しさん [2024/06/19(水) 07:39:14.75 ID:Ml7xOhwE.net] __init__.py 描けば良いのに
690 名前:デフォルトの名無しさん [2024/06/19(水) 08:41:26.42 ID:oNcSZ2Oe.net] C言語系は数年やっていてpythonのお勉強してるので質問させてくれ @propertyを使用してgetter/setterを作れるのが分かりました このプロパティをprotectedにするにはどうしたらいいですか?
691 名前:デフォルトの名無しさん mailto:sage [2024/06/19(水) 09:10:58.03 ID:Of90IDaN.net] >>682 この辺の話かな? ttps://note.com/yucco72/n/nfc5ba5321567
692 名前:デフォルトの名無しさん [2024/06/19(水) 10:07:39.70 ID:Ml7xOhwE.net] >>683 そいつ馬鹿やな 痒い所に手が届いてる好例なのに
693 名前:デフォルトの名無しさん mailto:sage [2024/06/19(水) 10:48:00.65 ID:EzJYrWWw.net] >>680 サブがメインに依存するという仕様がよろしくないんだよ 依存性の方向を一方通行にするというのがモジュール設計の大原則
694 名前:デフォルトの名無しさん [2024/06/19(水) 11:37:31.50 ID:ANMSl1mg.net] >>685 そうはいってもどんな場合でも回避できるわけじゃないでしょ うまく切り出せば回避できるかもしれないけど、見通しが悪く不自然になる場合があると思う 今自分が困ってるのは先生と生徒の関係で、先生は生徒を何人か選ぶのだけど、先生の事情もあるし、生徒のスケジュールもあるしで、 先生が生徒を選んだ後に、選ばれた生徒に先生のスケジュールはこなせるか?を確認してもらってるんだけど かなり先生と生徒が密結合なのが避けられなくてインタフェースに切り出すと見通しが悪くなりそうなんだよね こういう場合はどうすればいいのかな
695 名前:デフォルトの名無しさん mailto:sage [2024/06/19(水) 19:41:52.46 ID:E1qEKZbV.net] >>685 元の質問者だけど 今回はメインGUIとサブGUIでそれぞれ独立させて、メインGUIからサブGUIを見るだけ に作り直しました ところで__init__.pyを書くとはなんですか?
696 名前:デフォルトの名無しさん mailto:sage [2024/06/19(水) 22:24:53.92 ID:jr8KvPbD.net] ctypesで構造体宣言するときに、以下のようにc側が不完全型の配列定義であった場合は、どのように宣言すればよいでしょうか。 typedef struct aa { uint32 eListType; uint16 wRes; uint16 wOdList[]; } class aa(Structure)
697 名前:: _fields_ = [("eListType",c_uint32), ("wRes",c_uint16), ("wOdList",???) ] [] [ここ壊れてます]
698 名前:デフォルトの名無しさん mailto:sage [2024/06/19(水) 22:42:47.22 ID:0e7E5JVP.net] >>686 >先生が生徒を選んだ後に、選ばれた生徒に先生のスケジュールはこなせるか?を確認してもらってる これもapp.rootのやつと同じで生徒が先生に直接依存する必要なくない? 先生、生徒、コース/クラス、受講、のよくあるモデル 参照じゃなくidで受け渡すことも考えるといいよ
699 名前:デフォルトの名無しさん [2024/06/20(木) 08:09:05.13 ID:hChVJ2JT.net] >>687 それってpipでインストールできる?
700 名前:デフォルトの名無しさん [2024/06/20(木) 17:09:09.89 ID:F8Q2DGBi.net] >>688 C の方が malloc(sizeof(struct aa) + N) みたいにやってるだろうから とりあえず N の最大値くらい確保
701 名前:デフォルトの名無しさん [2024/06/20(木) 17:55:30.81 ID:ZSpymqjs.net] >>689 直接依存する必要がないので、idを持っておけばよいということ? 確かにidから引けるdictを持っておけばよいのはそうだけど、実質的にはそれは依存関係にあって、プログラミング言語での表現の制約を回避する策にすぎないような気がするのだけど勘違い?
702 名前:デフォルトの名無しさん mailto:sage [2024/06/20(木) 18:12:29.06 ID:pudWG0gF.net] >>688 ("wOdList", POINTER(c_uint16)) a = aa() a.wOdList = (c_uint16 * size)() wResがwOdListのsizeだったりするのかな?
703 名前:デフォルトの名無しさん mailto:sage [2024/06/20(木) 23:47:51.33 ID:F6VlqWlP.net] >>692 参照とidはカップリングの度合いの違い 直接依存する必要がないからという理由で書いたわけではないよ 片方がidだけに依存する形にすれば相互依存を解消できる AとBの相互依存からAのidをC切り出して AはBとCに依存、BはCに依存、CはAにもBにも依存しない形にできる ただこういうのはプログラミング上の小手先のテクニックなのは確か >>686 の話はもっとドメインレベルでの本質的な依存関係を先に突き詰めたほうがいいと思う
704 名前:デフォルトの名無しさん mailto:sage [2024/06/21(金) 10:29:55.02 ID:M8EEKVG+.net] >>693 from ctypes import * class aa(Structure): _fields_ = [('a', c_uint32), ('b', POINTER(c_uint16))] a = aa() a.a # 0 a.b # <__main__.LP_c_ushort object at 0x000002033996A340> a.__sizeof__() # 104 sizeof(a) # 16 a.b = (c_uint16 * 4)(9,8,7,6) a.b # <__main__.LP_c_ushort object at 0x000002033996AAC0> a.__sizeof__() # 104 sizeof(a) # 16 だめやん
705 名前:デフォルトの名無しさん mailto:sage [2024/06/21(金) 13:07:20.00 ID:tjV7APzm.net] >>695 そういうもんやで sizeofの結果も自動的に変わると思ってた?
706 名前:デフォルトの名無しさん [2024/06/21(金) 15:09:56.96 ID:M8EEKVG+.net] そういう問題じゃなくて 常にPOINTER型の容量分しか無いのは可笑しい
707 名前:デフォルトの名無しさん mailto:sage [2024/06/21(金) 15:17:35.67 ID:M8EEKVG+.net] 少なくとも >>688 の質問に対して正しい答えは from ctypes import * class aa(Structure): _fields_ = [('a', c_uint32), ('b', POINTER(c_uint16))] a = aa() a.b = (c_uint16 * 4)() # これは間違い sizeof(a) # 16 class bb(Structure): _fields_ = [('a', c_uint32), ('b', (c_uint16 * 4))] b = bb() sizeof(b) # 12 class cc(Structure): _fields_ = [('a', c_uint32), ('b', (c_uint16 * 8))] c = cc() sizeof(c) # 20
708 名前:デフォルトの名無しさん mailto:sage [2024/06/21(金) 15:45:50.01 ID:K+jIH7ye.net] >>697 そういう問題が何を指すのか分からんが__sizeof__もctypes.sizeofもそういう仕様なんだって Cのsizeofも同じやで >>698 固定長にしろや!ってこと? まーそれはそれで一つの選択肢だけど質問の答えにはなっとらんわな
709 名前:デフォルトの名無しさん mailto:sage [2024/06/21(金) 16:03:41.50 ID:K+jIH7ye.net] 単に同じというと誤解を生むかもしれないから言い直しておくと 可変長部分のサイズがsizeofに反映されず自分で計算して別途管理しないといけないのはCも同じ ということ
710 名前:デフォルトの名無しさん mailto:sage [2024/06/21(金) 16:04:51.86 ID:pyvrMoIs.net] pythonでandroidとiOSのアプリ作ってる人いる? kotlinとswift覚えればいいんだけど、手間がかかるので
711 名前:688 mailto:sage [2024/06/21(金) 19:26:17.13 ID:HIobLuWQ.net] みなさんありがとうございます 結局固定長で適当に宣言しとけば良いってことですかね 確かにc側でmalloc使ってそうな気がします
712 名前:デフォルトの名無しさん mailto:sage [2024/06/21(金) 21:53:29.93 ID:xFZSSSbA.net] ちゃんと配列をやるならbuffer protocolにしたら
713 名前:デフォルトの名無しさん mailto:sage [2024/06/22(土) 03:01:56.40 ID:UT0yRehg.net] 変数に何入ってんのかわかんなくない? $%@使い分けるperl最強だわ
714 名前:デフォルトの名無しさん mailto:sage [2024/06/22(土) 03:20:24.58 ID:ITxAndmC.net] 時代はタイプアノテーションなんですよ!(´・ω・`)
715 名前:デフォルトの名無しさん [2024/06/22(土) 09:29:12.03 ID:mcK0MSE8.net] タイプアノテーションで思いだしたが、結局型チェック実装された? それともそこまで効力は無い?
716 名前:デフォルトの名無しさん [2024/06/22(土) 09:38:48.07 ID:R3uDiOs/.net] >>704 #&*も忘れてるだろ
717 名前:デフォルトの名無しさん [2024/06/22(土) 11:44:35.80 ID:tVWK2T1P.net] >>706 Pythonの型チェックは外部ツールに任せるというのがポリシーなので標準実装されることはない 型アノテーションは厳密なチェックをするというよりは文字通り注釈としての役割が主であり、 VSCodeやPyCharmを通じて人間にヒントを与えるという点においてはそれなりに効力はある
718 名前:デフォルトの名無しさん mailto:sage [2024/06/22(土) 13:20:16.98 ID:JlqSUEN6.net] >>708 vscodeでさ a.py __init__ self.b = b.B(subclassX | subclassY) b.py __init__ self.subclass = subclass こうしたとき、b.pyに動的にサブクラス型情報送りたいんだけどどうすればいい? a.py書いたあとにb.py触りに行ったら、self.subclass以下のツールチップがXかYのものになってほしいんだけど
719 名前:デフォルトの名無しさん mailto:sage [2024/06/22(土) 13:39:16.54 ID:o/eWDsQ7.net] >>688 への回答として >>693 は全く不適切 判っててわざと間違ってるんだろうが全く別物 初心者に嘘を教えるのは良くない https://ideone.com/YUADDB #include <stdio.h> #include <stdlib.h> int x; struct A { int a; int b[]; }; struct B { int a; int *b; }; int main(void) { printf("%zu\n", sizeof(x)); printf("%zu\n", sizeof(struct A)); printf("%zu\n", sizeof(struct B)); struct B b = {0}; b.b = (int *)malloc(4 * sizeof(int)); free(b.b); /* struct A a = {0}; a.b = (int *)malloc(4 * sizeof(int)); // compile error free(a.b); // don't free (may be cause to runtime error) */ return 0; }
720 名前:デフォルトの名無しさん mailto:sage [2024/06/22(土) 16:27:25.33 ID:zTNlWcoj.net] >>706 最新のpythonでほぼ完全なGenerics表記が実装された これにMSの静的型チェッカーPyrightを使えば動的言語では初めてまともな型システムが実装されたことになる
721 名前:デフォルトの名無しさん mailto:sage [2024/06/22(土) 16:39:32.42 ID:HiCoQzk6.net] TypeScriptより優れてるってこと?そうかなあ
722 名前:デフォルトの名無しさん mailto:sage [2024/06/22(土) 16:51:56.48 ID:UT0yRehg.net] >>705 そうなんだ、、 勉強してくる
723 名前:デフォルトの名無しさん mailto:sage [2024/06/22(土) 18:07:00.66 ID:n3FOHUyg.net] >>710 flexible array memberの基本的な使い方も知らないのに 無理してレスしなくてもよくない? C側でメモリ確保したいならこう書くんだよ struct A *a = malloc(sizeof(struct A) + size * sizeof(int)); >>693 のa.wOdList = (c_uint16 * size)()はPython側でメモリ確保する場合の話だよ CとPythonでやり取りする時はflexible array memberのsizeも当然受け渡しする必要があるよ こんなんで大丈夫かな?
724 名前:デフォルトの名無しさん mailto:sage [2024/06/22(土) 21:23:10.50 ID:+hHL9oAL.net] # ダイアログを表示する import TkEasyGUI as eg layout = [[eg.Input(width=9, key="pt"), eg.Text("pt", width=6, height=2), eg.Button("コピー", key="pt_copy")], [eg.Input(width=9, key="kyu"), eg.Text("級(歯)", width=6, height=2), eg.Button("コピー", key="kyu_copy")], [eg.Input(width=9, key="mm"), eg.Text("mm", width=6, height=2), eg.Button("コピー", key="mm_copy")]] window = eg.Window("pt-Q-mm", layout, font=(None,14), size=(250,150)) def execute(): in_pt = values["pt"] window["kyu"].update(in_pt) window["mm"].update(in_pt) while True: event, values = window.read() if event == "pt": execute() if event == "kyu": execute() if event == "mm": execute() window.close() key="pt"の入力欄に文字が入力されると、リアルタイムに、 key="kyu"とkey="mm"の入力欄にkey="pt"と同じ文字を表示したいのですが、 def execute():をどう修正すれば良いでしょうか? 今のままだと、key="pt"の入力欄に文字を入力しても、 key="kyu"とkey="mm"の入力欄に何も表示されません…
725 名前:715 mailto:sage [2024/06/22(土) 21:53:43.34 ID:+hHL9oAL.net] JavaScriptのOnChangeみたいなのをやりたかったのですが、止めました ChatGPTに教えてもらったコードでも、うまくリアルタイム表示出来なかったので… 「実行」ボタンを押したら、表示されるようにします ありがとうございました
726 名前:デフォルトの名無しさん [2024/06/23(日) 00:28:02.79 ID:2xccr50A.net] >>714 >C側でメモリ確保したいならこう書く >struct A *a = malloc(sizeof(struct A) + size * sizeof(int)); もちろん知ってる >a.wOdList = (c_uint16 * size)()はPython側でメモリ確保する場合 どこが等価なの
727 名前:デフォルトの名無しさん mailto:sage [2024/06/23(日) 12:15:44.92 ID:6BLTL9tJ.net] >>717 >どこが等価なの 誰も等価だなんて話はしとらんのやで FAMを含む構造体が使われてるCのAPIを FAMを直接サポートしてないctypesを使ってPythonから利用する話をしとるんやで 構造体のメモリをCで確保/開放する場合もあれば Pythonで確保/開放する場合もあるんやで (一旦コピーする場合はそれぞれでやるのもありえるんやで) FAMの有無も違う上に メモリ管理の方法もルールも根本的に違うCとPythonで 等価になるわけないんやで
728 名前:デフォルトの名無しさん mailto:sage [2024/06/23(日) 12:29:27.23 ID:NuUT7kNv.net] >688 >ctypesで構造体宣言するときに、 >以下のようにc側が不完全型の配列定義であった場合は、 >どのように宣言すればよいでしょうか。
729 名前:デフォルトの名無しさん mailto:sage [2024/06/23(日) 12:42:53.65 ID:NuUT7kNv.net] chatGPT の回答を改変した様な解答やね 伝言ゲームでもやってんのかな
730 名前:デフォルトの名無しさん mailto:sage [2024/06/23(日) 19:40:41.83 ID:GsZtttEh.net] 終了までお早めに https://i.imgur.com/f7tN1NE.jpg
731 名前:デフォルトの名無しさん mailto:sage [2024/06/23(日) 20:12:48.30 ID:nLTHI867.net] >>721 もう既にやっとるよ
732 名前:デフォルトの名無しさん mailto:sage [2024/06/23(日) 20:26:42.71 ID:f4WzOl4U.net] >>721 グロ
733 名前:デフォルトの名無しさん [2024/06/24(月) 00:41:26.66 ID:sso3G8sO.net] Pythonの変数、オブジェクトは最初に設定した値でデータ型が決まるから、結局、変数の初期化のような古臭いコーティングルールがないといけない。 データ型がわからなくなったら、データ型を調べるという行き当たりばったりの言語仕様
734 名前:デフォルトの名無しさん [2024/06/24(月) 07:13:54.02 ID:lLj5yZl4.net] >>724 > Pythonの変数、オブジェクトは最初に設定した値でデータ型が決まるから、 最初ってどういう意味だ。
735 名前:デフォルトの名無しさん mailto:sage [2024/06/24(月) 08:57:31.37 ID:+wQGxx+4.net] >>721 気軽に稼げそうでいいね
736 名前:デフォルトの名無しさん mailto:sage [2024/06/24(月) 09:38:30.63 ID:ALkJ+vo8.net] メソッドの引数にdictを渡してアンパックする場合しない場合の使い分けってどういう基準なんやろ(´・ω・`)
737 名前:デフォルトの名無しさん mailto:sage [2024/06/24(月) 10:11:03.74 ID:mBNYuZ1y.net] >>724 Pythonにおける変数、オブジェクト、値、データ型の認識が 根本的に間違ってるのでチュートリアルからやり直しましょう
738 名前:デフォルトの名無しさん mailto:sage [2024/06/24(月) 11:25:58.61 ID:ldoAoKVT.net] 変数は任意のオブジェクトをアサインできるといっても 実際には複雑化するから最初の型から変えないよね そこを人間が意識する必要があるってことかな typingにつながる話
739 名前:デフォルトの名無しさん mailto:sage [2024/06/24(月) 12:01:57.24 ID:QPNUuP4k.net] 動的言語を使えない人のメンタルモデルってこういう感じなんだな
740 名前:デフォルトの名無しさん mailto:sage [2024/06/24(月) 12:02:51.99 ID:uJ7CYiLU.net] pyinstallerでexe(app)化してたんだけど、長い日本語ファイル名だと失敗するね pt.pyにしたら成功した
741 名前:デフォルトの名無しさん mailto:sage [2024/06/24(月) 12:25:05.97 ID:/T/eMsO3.net] >>730 Pythonが動的型なのは単にその方が処理系の実装が簡単だからで、動的型である事自体にメリットなんてないよ スクリプトの動的なロードだとかNotebookでの試行錯誤云々というのも結局はそういう状況で静的型付けを実装するのが難しいからに過ぎない 静的型では常に型が一つに決まってなきゃいけないというのは誤解で、例えば「DataFrameに格納されうる任意の型」の型を持つ変数を使うんだよ