【まず1嫁】くだすれPython(超初心者用) その59at TECH
【まず1嫁】くだすれPython(超初心者用) その59 - 暇つぶし2ch596:デフォルトの名無しさん
24/05/26 05:11:49.24 5Cxfl8yi.net
Google colabでクロムドライバーをどこに置けばいいんですか?

597:デフォルトの名無しさん
24/05/27 06:00:49.16 qvFqCc+v.net
漏れ独自のやり方で良ければ、
漏れは、C: 直下に、適当な名前のフォルダを作って、
そこに、chrome driver を置いている。
C:/BrowserDriver/chromedriver.exe
そして、ユーザー環境変数・path に、そのフォルダのパスを追加する。
C:\BrowserDriver
環境変数・path は、Powershell で以下で確認できる。
$env:Path.split( ";" )

598:デフォルトの名無しさん
24/05/27 20:12:43.14 Hlp/8xqP.net
>>590
有難うございます、試してみます

599:デフォルトの名無しさん
24/05/29 21:20:05.17 SBPtCrlE.net
ある程度自由にデザインできて作りやすいGUIのライブラリって何がありますか?CustomTKinter?
でもこれでもちょっとわかりにくいけど、我慢してコードの書き方を覚えるしかない?

600:デフォルトの名無しさん
24/05/29 21:22:50.04 SBPtCrlE.net
あ、でもそんなに難しく無いですね
Custom TKinterくらいがちょうど良い
これでいきます

601:デフォルトの名無しさん
24/05/29 23:25:41.17 SBPtCrlE.net
やっぱりPySimpeGUIにした
わかりやすいので

602:デフォルトの名無しさん
24/05/31 08:16:19.69 zAziLKIc.net
>>586
読みましたわかんないです

603:デフォルトの名無しさん
24/05/31 08:19:43.69 5P0I5zKD.net
abcde
という文字の一部を選択するときに
0a1b2c3d4e5
というように0から数える言語じゃなかったか?python3

604:デフォルトの名無しさん
24/05/31 09:16:40.63 Rfc8mm4q.net
>>596
唐突になに?

605:デフォルトの名無しさん
24/05/31 10:27:03.30 9rLTVgTT.net
とうぜん585の答えの理由だよ
いいかげんに判れよ
数え方が間違っているんだよ

606:デフォルトの名無しさん
24/05/31 10:57:52.41 TyV+wAs5.net
>>585の話ならmylist[start: stop]のstopで指定した箇所が
スライスに含まれるのか含まれないかの話だから
0から数えるかどうかは関係ない
だから>>597の感想も頷ける

607:デフォルトの名無しさん
24/05/31 11:17:11.06 xqNBz4cX.net
決めの話でもあるけど半開区間のが書くコードが素直になる

608:デフォルトの名無しさん
24/05/31 12:39:47.52 9rLTVgTT.net
スタートオフセットと終了オフセットね
list[x]のxと異なる

609:デフォルトの名無しさん
24/05/31 13:52:28.81 ixAaAqDb.net
そうそう、>>596の言うように、スライスで指定する値は各要素そのものの位置ではなくて、要素と要素の間の位置なんだよね。
0●1●2●3… (●は要素)

これが理解できると、マイナス指定で逆から取り出したりとかもすぐに分かるようになるかと。

610:デフォルトの名無しさん
24/05/31 15:02:02.41 z4TXzonv.net
ぶっちゃけそれは違う
そういう説明じゃないと理解できない人向けの説明としては意味があると思うけどいつまでも引きずるものじゃない

611:デフォルトの名無しさん
24/05/31 15:08:57.01 MpCbGIxa.net
べつに問題ないと思うがなあ。
グラフィックスで言う


612:ピクセル座標に対するグリッド座標系の話と同形。



613:デフォルトの名無しさん
24/05/31 15:32:41.83 xqNBz4cX.net
ここで別の概念を導入しないと習得できないくらいじゃ先が思いやられるってだけで
問題の有無はこれからどこまで取り組むかによる

614:デフォルトの名無しさん
24/05/31 16:00:35.87 E++g7v66.net
要素の数はわかりやすいよな
引き算するだけでいいし

615:デフォルトの名無しさん
24/06/01 16:32:50.72 2v+0cLbq.net
デザインパターンでオブジェクト指向を理解し始めたら、オブジェクト指向が廃れてしまった(´・ω・`)

616:デフォルトの名無しさん
24/06/01 17:32:13.74 C+czcv7n.net
GUI作成ツールって無いの?
グラフィックアプリみたいにウィジェットを配置したら、コードを書き出してくれるツール

617:デフォルトの名無しさん
24/06/01 17:33:08.15 wmmovTy+.net
Qt

618:デフォルトの名無しさん
24/06/01 19:46:57.51 etHHxabq.net
wx

619:デフォルトの名無しさん
24/06/01 20:25:37.00 Zt7v+i4d.net
Qt Quickもぽとぺたできるけど人少なすぎてな…

620:デフォルトの名無しさん
24/06/03 20:22:29.52 MnZ0MIrt.net
Anaconda3-2024.02-1-Windows-x86_64をインストールしたいのですが、
エラーが出て実行できません。OSはちょっと古くwindows7になります。

インストールしている最中、このようなエラーが発生します。
最初は『Failed to extract packages』のエラーです
略すと、パッケージの抽出に失敗しました。と言う内容です。

『無視』を押してインストールを進めると今度は、
Failed to link extracted packages to C:\Anaconda! というエラーが出ます。
抽出したパッケージを C:\Anaconda(インストール先フォルダ) にリンクできませんでした。

これも『無視』を押して進むと、Failed to initialize conda directoriesというエラーで
ディレクトリの初期化に失敗しました。というエラーです。
これも無視してもインストールできるのですが、
インストールフォルダを開いて実行しようとすると、
コンピュータにapi-ms-win-core-path-l1-1-0.dllがないため、
プログラムを開始できませんでした。
というエラーが出ました。

こういうエラーはだいたい、Microsoft Visual C++が入ってないことが原因ですが、
私のPCには既に、
Microsoft Visual C++ Redistributable 2013
Microsoft Visual C++ Redistributable 2015-2022はインストールされています。
しかし、このエラーが出ます。

どうすればいいでしょうか?

621:デフォルトの名無しさん
24/06/03 21:50:52.22 3hY3UrlC.net
>>612
馬鹿は何で勝手にエラーを無視するの?
馬鹿だから?

622:デフォルトの名無しさん
24/06/03 23:56:17.44 zK4G03Sv.net
>パッケージの抽出に失敗しました

エラーなのに、何でそこで処理を止めないの?

623:デフォルトの名無しさん
24/06/04 01:31:12.37 nKdfCONb.net
>>614
そりゃ止めるべきですが、そこでインストールが終わってしまいます
その後どうするんでしょうか

624:デフォルトの名無しさん
24/06/04 01:47:07.24 gWxOd/CS.net
エラーの原因を調べて対処する
or
「Failed to extract packages」みたいな原因も対処方法も分からない
クソみたいなエラーメッセージしか出せないソフトウェアは今すぐ捨てる

625:デフォルトの名無しさん
24/06/04 03:02:29.50 hII/eoCO.net
>>615
原因はいくつかあるけど、これをクリアしてもお前みたいな奴は結局無理だよ

626:デフォルトの名無しさん
24/06/04 03:21:34.42 hR2Ko9Dv.net
あ、人を轢いちゃった
でも時間に間に合わないからこのまま行こうっと
何か車の調子が変だな?がちゃがちゃ
あ、また轢いちゃった
まあいいや、このまま行かないと間に合わない
あっ、信号が赤だけど停まれないからえいっ
あー、ぶつけられた

すみません、時間に間に合わせるにはどうしたら良いですか?


こんな感じか?

627:デフォルトの名無しさん
24/06/04 08:17:16.38 f1zDzjkS.net
きよし「二人寝てますよ」
やすし「轢いとるやないか!」

628:デフォルトの名無しさん
24/06/04 11:44:28.70 nKdfCONb.net
>>612
こちらどうでしょうか?知っている人教えて下さい

629:デフォルトの名無しさん
24/06/04 11:56:23.33 C1T0aGVu.net
>>620
>>616

630:デフォルトの名無しさん
24/06/04 12:15:01.67 f1zDzjkS.net
>>620
類似事象があるようなので、「いいね」の付けられたレスの解法を試行するのはどうだろう。
URLリンク(community.anaconda.cloud)

631:デフォルトの名無しさん
24/06/04 12:57:59.77 v1hWPJDU.net
>>612
Win7に対応してるのは2019-10まで
URLリンク(docs.anaconda.com)
pythonだけでいいならpython.org公式の3.8.10まで

632:デフォルトの名無しさん
24/06/04 16:49:21.73 tR+BuZi1.net
ここは超初心者用ではあるけど、境界知能者用のスレではないよ

633:デフォルトの名無しさん
24/06/04 23:07:28.09 k5yNkVnV.net
プログラマー板がまともだったことはない

634:デフォルトの名無しさん
24/06/05 23:47:06.04 ESv2AI1d.net
>>622-623
ありがとうございます
>>624
>>973
役に立たん荒らしのゴミが相手にされなかったから発狂してて草w死んどけよカスw

635:デフォルトの名無しさん
24/06/05 23:48:44.31 SEG9AGVJ.net
pkg install python した方がよっぽど簡単なんじゃねw

636:デフォルトの名無しさん
24/06/06 10:38:37.99 1RUNBtFi.net
anaconda、バージョン違いの小さな差異は本体だけでpyでバージョンごとに
個別管理できるようになったし有償化した(割に機能が見合っていない)ので
使い続ける意味あんまなくなったな。
ウチの会社でももう使わないように通達されてる。

637:デフォルトの名無しさん
24/06/06 10:49:12.08 qz5pj6nB.net
またanacondaの話になるならanaconda専用スレ立てれば良い

638:デフォルトの名無しさん
24/06/06 17:55:27.15 +f7ZeVqk.net
pipxが安全なのはわかるが使いにくいな
pipxは見ずにpoetryだけ使えばいいのか

639:デフォルトの名無しさん
24/06/07 01:52:33.37 TKo/YskT.net
>>612
こいつの本性が笑える
Pythonのお勉強 Part72
スレリンク(tech板:970番)-

ID:ESv2AI1d0

640:デフォルトの名無しさん
24/06/07 06:04:01.45 +I6YMw89.net
あれだけ煽っておいてよく同じ質問を同じ板でしたなw

641:デフォルトの名無しさん
24/06/07 12:09:55.41 dEUVRqD7.net
pythonのパッケージマネージャーはいくつ出れば気が済むのか(´・ω・`)

642:デフォルトの名無しさん
24/06/07 12:34:41.54 q6BY+Kco.net
幾つのパッケージマネージャが出れば、君は Pythonをまともな言語と呼ぶのか。
友よ、その答は風に吹かれている。

643:デフォルトの名無しさん
24/06/07 12:49:10.90 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:デフォルトの名無しさん
24/06/07 14:49:41.59 SXd2mcAV.net
groupA: image: sampleA0.jpg
groupA: section: - section2: image: sampleA2.jpg
groupB: section: - section2: image: sampleB2.jpg
にならない理由は?

645:デフォルトの名無しさん
24/06/07 15:25:32.07 U/LNotLd.net
いっぱいあるXPath相当がつかえるモジュールでもつかえば?
YAML用じゃなくてもDict向けのでもいい

646:デフォルトの名無しさん
24/06/07 16:31:15.75 Z4LBLF5E.net
Python はvenv、Ruby はrbenv、Node.js はnvm など、
各言語で異なるバージョンマネージャーを使う香具師は素人。
すべて使い方が異なるだろ
プロは少なくとも数言語を使うから、
多言語バージョンマネージャーで使い方を統一する
Linux のローカル開発なら、Docker を使うのが簡単だが、
日本人が作った、多言語バージョンマネージャーのanyenv で、rbenv, nodenv も使える。
pyenv も同様。
asdf でも、多言語の好みのバージョンを入れられる

647:デフォルトの名無しさん
24/06/07 17:35:37.77 wW+zlW8A.net
>>635
pyyamlとboltonsのresearchを使う
後者は再帰的な処理を自作してもいい(dictとlistで場合分け)

648:デフォルトの名無しさん
24/06/08 00:52:57.64 TvmcjMCs.net
>>633
pythonの破綻が見えてきてると俺は思う
perlもcpanが腐って終わった

649:デフォルトの名無しさん
24/06/08 00:54:05.76 TvmcjMCs.net
dockerは無駄多すぎだろ
さすがに

650:デフォルトの名無しさん
24/06/08 12:49:56.73 JJO/Gn8n.net
dockerがベスト
vscodeのdevcontainerこそ人類がたどり着いた最高地点

651:デフォルトの名無しさん
24/06/08 14:04:39.39 pZ+rs27B.net
俺もvscode devcontainerの組み合わせが良い気がする(´・ω・`)

652:デフォルトの名無しさん
24/06/08 14:22:11.33 3whGHUAW.net
みんなそんなdockerつかうのね

653:デフォルトの名無しさん
24/06/08 14:41:09.17 E87q1Rk2.net
デプロイまで考えるとコンテナにしとくのがシンプル

654:デフォルトの名無しさん
24/06/08 14:46:38.50 dTYjDoY8.net
逆にDocker使ってない人見ると何で?って思うぐらいだよね

655:デフォルトの名無しさん
24/06/08 15:29:59.02 Dxs/ulLi.net
自分でコード書いてる時間が一番幸せなんじゃ

656:デフォルトの名無しさん
24/06/08 17:55:04.64 Hlb2wDxo.net
>>644
といいかまともな開発してたらもう使うわないと環境が破綻する

657:デフォルトの名無しさん
24/06/08 21:01:34.24 D2c2x+th.net
そんなもんデプロイ先の環境によるだろ

658:デフォルトの名無しさん
24/06/08 23:58:06.46 gE4A0CAK.net
くだ質ですまんが教えてください
Win11 + Python3.12.8 + vscode 環境で、
3 * 0.3 を計算させると8.99999...になってしまいます
(期待している計算結果は0.9)
是正させるためには
round(3 * 0.3 *10) / 10
をすればいいのはわかってるんですが、出来るだけコードを簡略化させたいのと、そもそも何故こんな結果になってしまうのかを出来れば知りたい、です

659:デフォルトの名無しさん
24/06/08 23:59:19.96 gE4A0CAK.net
ごめん計算結果のとこは0.899999...の間違いです

660:デフォルトの名無しさん
24/06/09 00:42:23.58 DuD3W8cN.net
URLリンク(docs.python.org)

661:デフォルトの名無しさん
24/06/09 01:03:55.23 KXbUABQj.net
デデキントの切断という話でなくて単純に整数n,mによる
n/mをサポートする型がデフォルトではないから
そういう有理数正確に扱える↓を使え
fractions -> Rational numbers

662:デフォルトの名無しさん
24/06/09 01:19:56.30 KXbUABQj.net
不動点少数は高速でメモリ消費が少ないのでpythonのデフォルト型には似合ってるよ
でももし、こうした計算が頻回あるいは重要に行なわれるなら
デフォルトで有理数をサポートした言語 common_lisp,R,wolfram等が良いだろう
また無理数も正確に扱いたいならwolframを薦めとく。これはsin(2pi)=0を返す珍しい言語だ

663:デフォルトの名無しさん
24/06/09 06:20:23.00 zJwQQmGc.net
サンクス
言語仕様なら仕方ないか
仮想通貨の自動売買用にpythonを始めたんだけど、今のところ他の言語に切り替える考えはないっす
あと調べたらdecimalってモジュールもあって、これを使ってもスッキリ書けそうね

664:デフォルトの名無しさん
24/06/09 09:38:02.01 XLDZv0sl.net
浮動小数点数は言語仕様というと違和感があるな
どの言語でもほぼ同じ問題出るだろうし

665:デフォルトの名無しさん
24/06/09 09:39:22.17 XLDZv0sl.net
>是正させるためには
>round(3 * 0.3 *10) / 10
>をすればいいのはわかってるんですが

こんなことしたらダメでしょ

666:デフォルトの名無しさん
24/06/09 10:37:28.45 0/tKVw6D.net
Decimalは使いづらいんだよね
Decimal('3') * Decimal('0.3')とかいちいちやってられん

667:デフォルトの名無しさん
24/06/09 11:41:31.33 lrgfA1Gl.net
継承と合成どちらを使うべきかと基準がよくわからんなぁ(´・ω・`)

668:デフォルトの名無しさん
24/06/09 17:04:58.68 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:デフォルトの名無しさん
24/06/10 15:55:09.93 YXHAsqQy.net
>>> Decimal(3) * Decimal(3/10)
Decimal('0.8999999999999999666933092612')
だっさ

670:デフォルトの名無しさん
24/06/10 16:09:43.37 17x/k5Bx.net
まじか decimal だらしねーな
お手本
[1]> (* 3 (/ 3 10))
9/10

671:デフォルトの名無しさん
24/06/10 17:41:53.13 8JGo2SkV.net
>>> Decimal(3/10)
Decimal('0.299999999999999988897769753748434595763683319091796875')
>>> Decimal(3/10).quantize(Decimal('0.0'))
Decimal('0.3')
エスパーしない方針だから

672:デフォルトの名無しさん
24/06/10 21:30:34.55 RgnmhcQ5.net
>>661
クソだっさwww

673:デフォルトの名無しさん
24/06/11 10:00:28.46 ufFRRQKE.net
↓俺の考えた最強のスマートな書式を語れ

674:デフォルトの名無しさん
24/06/11 11:06:34.00 GrH0S5VC.net
>>> Decimal('3.0')
だっさpgr

675:デフォルトの名無しさん
24/06/11 11:19:18.72 GtLbEh/G.net
perlの2番煎じにはなるが import XXX で オーバーライドしてくれればいいね

676:デフォルトの名無しさん
24/06/11 20:03:54.96 NWbfM0Iu.net
C++プログラマーだが、
エディタは何使えばええの?
Visual Studioは一応動くが…

677:デフォルトの名無しさん
24/06/11 20:27:59.97 OZZ7Wa3f.net
汎用でつかえるのはPyCharmかVSCodeかな
用途とマッチするならJupyter/Colabもいける

678:668
24/06/12 08:58:44.17 j9iMATnj.net
>>669
一番高機能なのはVS Codeかね?
Colabが本格開発に無理なので、探してたところ。

679:デフォルトの名無しさん
24/06/13 07:44:44.26 W4hE6ovf.net
環境を整え無くてもいいPyCharmが楽だな

680:デフォルトの名無しさん
24/06/13 13:05:54.68 vNUeXKFR.net
会社の糞PCだとPyCharmが重いんだわ

681:デフォルトの名無しさん
24/06/13 13:21:14.57 Uc7cK+cC.net
パイチャ!

682:デフォルトの名無しさん
24/06/17 12:06:22.09 2+GH8Qi6.net
モジュールAのMainクラスがモジュールBに書いたSubクラスのインスタンスを生成する
型ヒントのためにAはBの、BはAの参照するから相互参照になっちゃうんだけど
typing typechecking使えば回避できるとして
これって根本的にどう作って相互参照回避すべきなんだ?

683:デフォルトの名無しさん
24/06/17 12:17:35.59 a7DQgjMw.net
シチュエーションが謎で理解できてないけど
インターフェースとして上位クラスをつくる

684:デフォルトの名無しさん
24/06/17 12:44:35.82 laKFnUpc.net
循環しちゃうのは速度落ちてメモリ消費してしまうけど記憶しといたのと照し合わせる手法がある

685:デフォルトの名無しさん
24/06/17 12:50:19.30 Me30jdtI.net
>>674
その状況だとBはAをインポートする必要いやろ
よくあるのはtyping用のスタブモジュールを作る方法

686:デフォルトの名無しさん
24/06/17 14:24:03.32 KAevd3qc.net
>>677
A.py App()
B.py Win()

winがコンストラクタでsuper().__init__(app.root)するとき
App渡せないとroot見えないって言われてしまう

687:デフォルトの名無しさん
24/06/17 15:22:40.07 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:デフォルトの名無しさん
24/06/18 23:47:26.99 l8Y5coIJ.net
>>679
仕様上サブがメインのいくつかに依存するから丸ごと渡してたけど
rootと、必要な位存箇所だけ渡すようにすればいいのね

689:デフォルトの名無しさん
24/06/19 07:39:14.75 Ml7xOhwE.net
__init__.py 描けば良いのに

690:デフォルトの名無しさん
24/06/19 08:41:26.42 oNcSZ2Oe.net
C言語系は数年やっていてpythonのお勉強してるので質問させてくれ
@propertyを使用してgetter/setterを作れるのが分かりました
このプロパティをprotectedにするにはどうしたらいいですか?

691:デフォルトの名無しさん
24/06/19 09:10:58.03 Of90IDaN.net
>>682
この辺の話かな?
URLリンク(note.com)

692:デフォルトの名無しさん
24/06/19 10:07:39.70 Ml7xOhwE.net
>>683
そいつ馬鹿やな
痒い所に手が届いてる好例なのに

693:デフォルトの名無しさん
24/06/19 10:48:00.65 EzJYrWWw.net
>>680
サブがメインに依存するという仕様がよろしくないんだよ
依存性の方向を一方通行にするというのがモジュール設計の大原則

694:デフォルトの名無しさん
24/06/19 11:37:31.50 ANMSl1mg.net
>>685
そうはいってもどんな場合でも回避できるわけじゃないでしょ
うまく切り出せば回避できるかもしれないけど、見通しが悪く不自然になる場合があると思う
今自分が困ってるのは先生と生徒の関係で、先生は生徒を何人か選ぶのだけど、先生の事情もあるし、生徒のスケジュールもあるしで、
先生が生徒を選んだ後に、選ばれた生徒に先生のスケジュールはこなせるか?を確認してもらってるんだけど
かなり先生と生徒が密結合なのが避けられなくてインタフェースに切り出すと見通しが悪くなりそうなんだよね
こういう場合はどうすればいいのかな

695:デフォルトの名無しさん
24/06/19 19:41:52.46 E1qEKZbV.net
>>685
元の質問者だけど
今回はメインGUIとサブGUIでそれぞれ独立させて、メインGUIからサブGUIを見るだけ に作り直しました
ところで__init__.pyを書くとはなんですか?

696:デフォルトの名無しさん
24/06/19 22:24:53.92 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:デフォルトの名無しさん
24/06/19 22:42:47.22 0e7E5JVP.net
>>686
>先生が生徒を選んだ後に、選ばれた生徒に先生のスケジュールはこなせるか?を確認してもらってる
これもapp.rootのやつと同じで生徒が先生に直接依存する必要なくない?
先生、生徒、コース/クラス、受講、のよくあるモデル
参照じゃなくidで受け渡すことも考えるといいよ

699:デフォルトの名無しさん
24/06/20 08:09:05.13 hChVJ2JT.net
>>687
それってpipでインストールできる?

700:デフォルトの名無しさん
24/06/20 17:09:09.89 F8Q2DGBi.net
>>688
C の方が malloc(sizeof(struct aa) + N) みたいにやってるだろうから
とりあえず N の最大値くらい確保

701:デフォルトの名無しさん
24/06/20 17:55:30.81 ZSpymqjs.net
>>689
直接依存する必要がないので、idを持っておけばよいということ?
確かにidから引けるdictを持っておけばよいのはそうだけど、実質的にはそれは依存関係にあって、プログラミング言語での表現の制約を回避する策にすぎないような気がするのだけど勘違い?

702:デフォルトの名無しさん
24/06/20 18:12:29.06 pudWG0gF.net
>>688
("wOdList", POINTER(c_uint16))
a = aa()
a.wOdList = (c_uint16 * size)()
wResがwOdListのsizeだったりするのかな?

703:デフォルトの名無しさん
24/06/20 23:47:51.33 F6VlqWlP.net
>>692
参照とidはカップリングの度合いの違い
直接依存する必要がないからという理由で書いたわけではないよ
片方がidだけに依存する形にすれば相互依存を解消できる
AとBの相互依存からAのidをC切り出して
AはBとCに依存、BはCに依存、CはAにもBにも依存しない形にできる
ただこういうのはプログラミング上の小手先のテクニックなのは確か
>>686の話はもっとドメインレベルでの本質的な依存関係を先に突き詰めたほうがいいと思う

704:デフォルトの名無しさん
24/06/21 10:29:55.02 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:デフォルトの名無しさん
24/06/21 13:07:20.00 tjV7APzm.net
>>695
そういうもんやで
sizeofの結果も自動的に変わると思ってた?

706:デフォルトの名無しさん
24/06/21 15:09:56.96 M8EEKVG+.net
そういう問題じゃなくて
常にPOINTER型の容量分しか無いのは可笑しい

707:デフォルトの名無しさん
24/06/21 15:17:35.67 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:デフォルトの名無しさん
24/06/21 15:45:50.01 K+jIH7ye.net
>>697
そういう問題が何を指すのか分からんが__sizeof__もctypes.sizeofもそういう仕様なんだって
Cのsizeofも同じやで

>>698
固定長にしろや!ってこと?
まーそれはそれで一つの選択肢だけど質問の答えにはなっとらんわな

709:デフォルトの名無しさん
24/06/21 16:03:41.50 K+jIH7ye.net
単に同じというと誤解を生むかもしれないから言い直しておくと
可変長部分のサイズがsizeofに反映されず自分で計算して別途管理しないといけないのはCも同じ
ということ

710:デフォルトの名無しさん
24/06/21 16:04:51.86 pyvrMoIs.net
pythonでandroidとiOSのアプリ作ってる人いる?
kotlinとswift覚えればいいんだけど、手間がかかるので

711:688
24/06/21 19:26:17.13 HIobLuWQ.net
みなさんありがとうございます
結局固定長で適当に宣言しとけば良いってことですかね
確かにc側でmalloc使ってそうな気がします

712:デフォルトの名無しさん
24/06/21 21:53:29.93 xFZSSSbA.net
ちゃんと配列をやるならbuffer protocolにしたら

713:デフォルトの名無しさん
24/06/22 03:01:56.40 UT0yRehg.net
変数に何入ってんのかわかんなくない?
$%@使い分けるperl最強だわ

714:デフォルトの名無しさん
24/06/22 03:20:24.58 ITxAndmC.net
時代はタイプアノテーションなんですよ!(´・ω・`)

715:デフォルトの名無しさん
24/06/22 09:29:12.03 mcK0MSE8.net
タイプアノテーションで思いだしたが、結局型チェック実装された?
それともそこまで効力は無い?

716:デフォルトの名無しさん
24/06/22 09:38:48.07 R3uDiOs/.net
>>704
#&*も忘れてるだろ

717:デフォルトの名無しさん
24/06/22 11:44:35.80 tVWK2T1P.net
>>706
Pythonの型チェックは外部ツールに任せるというのがポリシーなので標準実装されることはない
型アノテーションは厳密なチェックをするというよりは文字通り注釈としての役割が主であり、
VSCodeやPyCharmを通じて人間にヒントを与えるという点においてはそれなりに効力はある

718:デフォルトの名無しさん
24/06/22 13:20:16.98 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:デフォルトの名無しさん
24/06/22 13:39:16.54 o/eWDsQ7.net
>>688 への回答として >>693 は全く不適切
判っててわざと間違ってるんだろうが全く別物
初心者に嘘を教えるのは良くない
URLリンク(ideone.com)
#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:デフォルトの名無しさん
24/06/22 16:27:25.33 zTNlWcoj.net
>>706
最新のpythonでほぼ完全なGenerics表記が実装された
これにMSの静的型チェッカーPyrightを使えば動的言語では初めてまともな型システムが実装されたことになる

721:デフォルトの名無しさん
24/06/22 16:39:32.42 HiCoQzk6.net
TypeScriptより優れてるってこと?そうかなあ

722:デフォルトの名無しさん
24/06/22 16:51:56.48 UT0yRehg.net
>>705
そうなんだ、、
勉強してくる

723:デフォルトの名無しさん
24/06/22 18:07:00.66 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:デフォルトの名無しさん
24/06/22 21:23:10.50 +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
24/06/22 21:53:43.34 +hHL9oAL.net
JavaScriptのOnChangeみたいなのをやりたかったのですが、止めました
ChatGPTに教えてもらったコードでも、うまくリアルタイム表示出来なかったので…
「実行」ボタンを押したら、表示されるようにします
ありがとうございました

726:デフォルトの名無しさん
24/06/23 00:28:02.79 2xccr50A.net
>>714
>C側でメモリ確保したいならこう書く
>struct A *a = malloc(sizeof(struct A) + size * sizeof(int));
もちろん知ってる
>a.wOdList = (c_uint16 * size)()はPython側でメモリ確保する場合
どこが等価なの

727:デフォルトの名無しさん
24/06/23 12:15:44.92 6BLTL9tJ.net
>>717
>どこが等価なの
誰も等価だなんて話はしとらんのやで

FAMを含む構造体が使われてるCのAPIを
FAMを直接サポートしてないctypesを使ってPythonから利用する話をしとるんやで

構造体のメモリをCで確保/開放する場合もあれば
Pythonで確保/開放する場合もあるんやで
(一旦コピーする場合はそれぞれでやるのもありえるんやで)

FAMの有無も違う上に
メモリ管理の方法もルールも根本的に違うCとPythonで
等価になるわけないんやで

728:デフォルトの名無しさん
24/06/23 12:29:27.23 NuUT7kNv.net
>688
>ctypesで構造体宣言するときに、
>以下のようにc側が不完全型の配列定義であった場合は、
>どのように宣言すればよいでしょうか。

729:デフォルトの名無しさん
24/06/23 12:42:53.65 NuUT7kNv.net
chatGPT の回答を改変した様な解答やね
伝言ゲームでもやってんのかな

730:デフォルトの名無しさん
24/06/23 19:40:41.83 GsZtttEh.net
終了までお早めに
URLリンク(i.imgur.com)

731:デフォルトの名無しさん
24/06/23 20:12:48.30 nLTHI867.net
>>721
もう既にやっとるよ

732:デフォルトの名無しさん
24/06/23 20:26:42.71 f4WzOl4U.net
>>721
グロ

733:デフォルトの名無しさん
24/06/24 00:41:26.66 sso3G8sO.net
Pythonの変数、オブジェクトは最初に設定した値でデータ型が決まるから、結局、変数の初期化のような古臭いコーティングルールがないといけない。
データ型がわからなくなったら、データ型を調べるという行き当たりばったりの言語仕様

734:デフォルトの名無しさん
24/06/24 07:13:54.02 lLj5yZl4.net
>>724
> Pythonの変数、オブジェクトは最初に設定した値でデータ型が決まるから、

最初ってどういう意味だ。

735:デフォルトの名無しさん
24/06/24 08:57:31.37 +wQGxx+4.net
>>721
気軽に稼げそうでいいね

736:デフォルトの名無しさん
24/06/24 09:38:30.63 ALkJ+vo8.net
メソッドの引数にdictを渡してアンパックする場合しない場合の使い分けってどういう基準なんやろ(´・ω・`)

737:デフォルトの名無しさん
24/06/24 10:11:03.74 mBNYuZ1y.net
>>724
Pythonにおける変数、オブジェクト、値、データ型の認識が
根本的に間違ってるのでチュートリアルからやり直しましょう

738:デフォルトの名無しさん
24/06/24 11:25:58.61 ldoAoKVT.net
変数は任意のオブジェクトをアサインできるといっても
実際には複雑化するから最初の型から変えないよね
そこを人間が意識する必要があるってことかな
typingにつながる話

739:デフォルトの名無しさん
24/06/24 12:01:57.24 QPNUuP4k.net
動的言語を使えない人のメンタルモデルってこういう感じなんだな

740:デフォルトの名無しさん
24/06/24 12:02:51.99 uJ7CYiLU.net
pyinstallerでexe(app)化してたんだけど、長い日本語ファイル名だと失敗するね
pt.pyにしたら成功した

741:デフォルトの名無しさん
24/06/24 12:25:05.97 /T/eMsO3.net
>>730
Pythonが動的型なのは単にその方が処理系の実装が簡単だからで、動的型である事自体にメリットなんてないよ
スクリプトの動的なロードだとかNotebookでの試行錯誤云々というのも結局はそういう状況で静的型付けを実装するのが難しいからに過ぎない
静的型では常に型が一つに決まってなきゃいけないというのは誤解で、例えば「DataFrameに格納されうる任意の型」の型を持つ変数を使うんだよ

742:デフォルトの名無しさん
24/06/24 12:49:15.81 JonISmvT.net
>>724-725
あえて言えばpythonの変数の型は全てPyObject型だよ

743:デフォルトの名無しさん
24/06/24 16:19:00.38 Kheo9t7V.net
>>733
それは実装に使ってるC言語の型システム上での話であって
Pythonの型システム上の話ではないよね

744:デフォルトの名無しさん
24/06/24 19:26:23.98 aCWMRkK6.net
未だにどれかの型を返す作りが好きになれない

745:デフォルトの名無しさん
24/06/25 04:15:11.46 dFDrSth2.net
>>733
それは最初は性能の低いパソコン用だったせいで、その名前の変数が始めて出てくるとき、その名前の変数に値が設定されるときに決める構文解釈だっただけ

Pythonは作者が構文解析エンジンを作り込むのが面倒だと思っていたせいで、仕様の追加状態も構文解析エンジンをちょっとだけしか変更していない。

そんな行き当たりばったりだったためにヘンテコな仕様になっている。

C言語、BASIC、VB,Perl、シェルスクリプト、Ada言語等の影響を受けているが、手抜きのプログラミング言語のままリリースしてしまった。

746:デフォルトの名無しさん
24/06/25 04:20:51.69 dFDrSth2.net
関数の引数がどんな型でも参照渡しとか、アセンブラのサブルーチンよりもひどい設計なんだよなあ

747:デフォルトの名無しさん
24/06/25 04:37:03.65 mddxyJup.net
>>724
だからそれが嫌ならpyright使いなよ

748:デフォルトの名無しさん
24/06/25 08:26:43.24 9x+jYxZG.net
むしろpythonはすべて値渡しでしょ
内部的に変数の値が参照になっているだけで

749:デフォルトの名無しさん
24/06/25 08:47:33.30 PJlEmYUO.net
>>737
オブジェクトだからどんな型でも参照渡しなんじゃないのか?
もしかして、「参照渡し」という言葉をオレが誤解している?

750:デフォルトの名無しさん
24/06/25 09:35:15.76 ZD6OkC9b.net
>>740
Pythonは(参照の)値渡し
>>737は間違いで>>739が正しい
def modify(x):
 x = None
x = [1, 2, 3]
modify(x)
print(x) #この結果をNoneにできるのが参照渡し

751:デフォルトの名無しさん
24/06/25 13:25:16.56 PJlEmYUO.net
>>741
それは引数の渡し方でなく、x = Noneによって xが新たな Noneオブジェクトを指した結果じゃないかな。

$ cat x.py
def modify(xx, yy):
  print('xx', id(xx), xx)
  print('yy', id(yy), yy)

  xx = None  # 代入により別オブジェクトを指す。
  yy.clear() # 変更結果が返される。

  print('xx', id(xx), xx)
  print('yy', id(yy), yy)
x = [1]
y = [11]
print('x', id(x), x)
print('y', id(y), y)
modify(x, y)
print('x', id(x), x)
print('y', id(y), y)

$ python3 x.py
x 140253632444160 [1]
y 140253627941632 [11]
xx 140253632444160 [1]
yy 140253627941632 [11]
xx 140253637855360 None
yy 140253627941632 []
x 140253632444160 [1]
y 140253627941632 []

752:デフォルトの名無しさん
24/06/25 13:26:58.66 ZtCD4zFU.net
>>736
Pythonの造りはtcl/ckに似ている

753:デフォルトの名無しさん
24/06/25 13:28:25.30 PJlEmYUO.net
>>741
で、C言語だとこんな感じかと想像するが、
変数 xの値である 1 を渡すことを、値渡し、
変数 xのポインタである 0x7ffed3b1f5ac を渡すことを、参照渡しと呼んでいた。

$ cat x.c
#include <stdio.h>
void modify(int *xx, int *yy) {
 printf("xx %p %d\n", xx, *xx);
 printf("yy %p %d\n", yy, *yy);
 int new_xx = 0;
 xx = &new_xx; /* 代入により別オブジェクトを指すPython風 */
 *yy = 0; /* 変更結果が返される。 */
 printf("xx %p %d\n", xx, *xx);
 printf("yy %p %d\n", yy, *yy);
 return;
}
int main(void) {
 int x = 1;
 int y = 11;
 modify(&x, &y);
 printf("x %p %d\n", &x, x);
 printf("y %p %d\n", &y, y);
 return 0;
}
$ cc x.c && ./a.out
xx 0x7ffed3b1f5ac 1
yy 0x7ffed3b1f5a8 11
xx 0x7ffed3b1f58c 0
yy 0x7ffed3b1f5a8 0
x 0x7ffed3b1f5ac 1
y 0x7ffed3b1f5a8 0

754:デフォルトの名無しさん
24/06/25 13:30:09.56 ZtCD4zFU.net
>>742
>>741 は出来ないから参照私じゃないって言ってるんだと思うが
君は日本人か?

755:デフォルトの名無しさん
24/06/25 13:31:55.40 ZtCD4zFU.net
>>744
>変数 xの値である 1 を渡すことを、値渡し、
>変数 xのポインタである 0x7ffed3b1f5ac を渡すことを、参照渡し

そんな事実は無い
「参照私」が出現したのはC++から
Cには値私とポインタ私しかない

756:742
24/06/25 14:10:18.90 PJlEmYUO.net
>>745
同じ渡し方の二つの引数の一方が出来て、他方が出来ないので、渡し方の問題じゃないよね、という話をしたよ。

>>746
Call by Reference の和訳は、ポインタ渡しでも参照渡しでも良いと思うよ。

757:デフォルトの名無しさん
24/06/25 14:20:27.21 mddxyJup.net
Cで実装されてるスクリプト言語の引数の渡し方を論じてなんか意味があるのか?
そういうメモリモデルってだけの話だ
C/C++やFortranみたいにマシンコードと密接に関係してるなら別だが

758:デフォルトの名無しさん
24/06/25 14:20:46.33 ZtCD4zFU.net
明確に参照私と言っていたのはPASCALやね

759:デフォルトの名無しさん
24/06/25 14:25:08.71 mddxyJup.net
こいつが言いたいのは参照渡しってのは明示的にアドレスを渡すのではなく変数を渡すと自動でその参照を渡すようにコンパイルされるような言語ということを言いたいのだろうことは理解できるが
それをスクリプト言語のPythonで論じてもナンセンス

760:デフォルトの名無しさん
24/06/25 14:37:32.71 PJlEmYUO.net
>>748,750
> Cで実装されてるスクリプト言語の引数の渡し方を論じてなんか意味があるのか?

どうなんだろう?
この手の話は、C言語の方が見通しやすかろうと思って添えたが。
意味が見出だせなければ無視して。Python例から等価っぽく想像しただけのものなので。

761:デフォルトの名無しさん
24/06/25 14:49:09.86 PJlEmYUO.net
>>750
> こいつが言いたいのは参照渡しってのは明示的にアドレスを渡すのではなく変数を渡すと自動でその参照を渡すようにコンパイルされるような言語ということを言いたいのだろうことは理解できるが

俺はその一文を理解できない。
シンプルに、
140253632444160 = id(x) の 140253632444160 に、呼び元呼び先ともにアクセスするので、それは「参照渡し」と言うのだと思っていた。
ということだよ。

762:デフォルトの名無しさん
24/06/25 14:56:52.16 mddxyJup.net
>>752
CS的にはそれは値渡しだよ
ポインタだろうがそれは全て整数をコピーするのだから
CS的な参照渡しというのはFortranの以下のような仕様のことを指すことが多い

単に引数をそのまま渡してるのに結果が呼び元に返ってくる
URLリンク(www.nag-j.co.jp)

763:デフォルトの名無しさん
24/06/25 16:21:34.93 KN/om7mq.net
>>752
その理解がないのにC/C++の参照渡し語ってて草

764:デフォルトの名無しさん
24/06/25 16:53:43.01 9x+jYxZG.net
a = ["ab","cd"]
def f(b):
 b.clear()
 b = None
f(a)
print(a)
値渡しの場合(pythonはこっち)
変数aの参照先の箱aに、["ab","cd"]への参照を値として入れる
変数bの参照先の箱bに、変数aの値(["ab","cd"]への参照)を入れる
変数bの参照先の箱bにある値(["ab","cd"]への参照)のclear()メソッドを実行する
変数bの参照先の箱bに、Noneへの参照を値として入れる
変数aの参照先の箱aにある値([]への参照)を表示する
参照渡しの場合
変数aの参照先の箱aに、["ab","cd"]への参照を値として入れる
変数bの参照先を、変数aの参照先の箱aにする
変数bの参照先の箱aにある値(["ab","cd"]への参照)のclear()メソッドを実行する
変数bの参照先の箱aに、Noneへの参照を値として入れる
変数aの参照先の箱aにある値(Noneへの参照)を表示する
c言語の場合も、ポインタの値渡しはあっても、参照渡しは無かった記憶

765:デフォルトの名無しさん
24/06/25 17:12:56.33 9x+jYxZG.net
void f(int *b) {
 *b = 2;
 b = NULL;
}
void main() {
 int a = 1;
 f(&a);
 printf("%d\n", a);
}
c言語のポインタの値渡し
変数aの参照先の箱aに、1を値として入れる
変数bの参照先の箱bに、変数aのアドレスを値として入れる
変数bの参照先の箱bにある値(変数aのアドレス)の参照先の箱aに2を入れる
変数bの参照先の箱bに、NULLを値として入れる
変数aの参照先の箱aにある値(2)を表示する

void f(int &b) {
 b = 2;
}
void main() {
 int a = 1;
 f(a);
 printf("%d\n", a);
}
c++言語の参照渡し
変数aの参照先の箱aに、1を値として入れる
変数bの参照先を、変数aの参照先の箱aにする
変数bの参照先の箱aに、2を値として入れる
変数aの参照先の箱aにある値(2)を表示する

長文ごめん

766:デフォルトの名無しさん
24/06/25 17:20:06.61 ZtCD4zFU.net
で?

767:デフォルトの名無しさん
24/06/25 17:26:57.66 PNR4S7a4.net
>>756
参照渡しは実際には変数を指すポインタを値渡ししていて、本質的には等価だよ
ポインタに対するちょっとした構文糖衣に過ぎない
ポインタに比べて制限が強い分だけ最適化されやすかったりする可能性はあるが

768:デフォルトの名無しさん
24/06/25 17:31:05.84 7aKndPlG.net
>>747
yy.clear()のように渡された参照やポインタを通して参照先の値を変更するのと
xx = Noneのように渡された参照やポインタ自体を変更するのは同じではない
後者を行った時に呼び出し元の変数も同じように変更されるものが参照渡し

>>748
メモリモデルではないよ

>>750
引数の渡し方というのはどのプログラミング言語を使う場合にも理解しておくべき基礎
だからスクリプト言語だとナンセンスってことはない
もちろんスクリプト言語でも参照渡しをサポートしてる言語はいくつもある

769:デフォルトの名無しさん
24/06/25 19:08:21.24 PJlEmYUO.net
>>753,755,756,759
CS とは何ぞ?
その CS的な参照渡しにおける「参照」とは整数以外の何なの?

ただ、「参照渡し」とは、サブルーチンへの引数の渡し方でなく、サブルーチンからの引数の返り方を以て、

・結果が呼び元に返ってくる
・呼び出し元の変数も同じように変更されるもの

という性質を言うらしいことが、ボヤっと分かった。
で、参照渡しっぽい事がしたけりゃ、Awkのように配列で授受すれと。

俺は、>>737 と同様に、オブジェクト実体へのポインタや実体のIDの授受を参照渡しと呼ぶのだと思っていたよ。

770:デフォルトの名無しさん
24/06/25 19:53:07.98 mddxyJup.net
>>760
参照とはオブジェクトを指し示すもののこと
ここでいうオブジェクトとはメモリ領域のことでありプログラミング言語においては特定の値のことを指す
つまりそれを指し示すようなものであればなんでも良い
VM言語であればスタックフレームからのオフセットに過ぎなかったりする

771:デフォルトの名無しさん
24/06/25 22:50:01.65 UoDN+2II.net
>>760
とりあえずC++では参照渡しはちゃんと定義されている用語で、
知ってる限りではC++での使われ方と違う使われ方はしないものなので、C++における参照渡しを勉強してくれ
そしてnullを代入することに意味のある変数を用意して実際に参照渡しのコードを書いてみて
CSとはなんぞという質問が物語っていて、Computer Scienceで共有すべき知識を持っていない状態のように思う

772:デフォルトの名無しさん
24/06/25 23:11:20.56 nRVgOfun.net
>>736
横レスだけど
この書き込みありがとう
perl好きの俺がなんでpython嫌いなのか
わかった気がする

773:デフォルトの名無しさん
24/06/25 23:38:25.41 WkoTZsDY.net
>>760
>ただ、「参照渡し」とは、サブルーチンへの引数の渡し方でなく、サブルーチンからの引数の返り方を以て、
>・結果が呼び元に返ってくる
引数も結果も「返る」というのは少し違う
サブルーチン内での引数を変更するとその時点でその変更が直接呼び出し元に反映される

774:デフォルトの名無しさん
24/06/26 00:11:27.85 kR99xHRb.net
間違ったこと書いてた張本人は間違いを指摘されても反省するどころか開き直っちゃってるのが解せない
最近そんなやつが多くて萎える

775:デフォルトの名無しさん
24/06/26 00:20:27.75 /ebqJ/eA.net
>>765
これな

776:デフォルトの名無しさん
24/06/26 00:20:45.10 /ebqJ/eA.net
多分、朝鮮人

777:デフォルトの名無しさん
24/06/26 01:10:11.09 yv8Z2CuH.net
>>760
番地なのか、番地にあるものなのかのような違いで、Pythonはコンピューターそのものですらやらない方法をとってしまっている。
大きなデータではなければ、コピーを作って渡すのが、ほとんどのプログラミング言語の仕様。
Pythonの関数はアセンブラだと他のプログラミング言語はサブルーチンの呼び出しと同じだが、Pythonはただのジャンプ命令でプログラムを行ったり来たりしているだけ。
いまのCPU内はレジスタが多いからあまり問題にならないが、Pythonも一定の長い連続領域の場合は、メモリとファイルを使うことになる。
同時実行プロセスが多い高性能サーバーとは相性が悪い。
クラウドという仮想サーバーなら、動的に仮想サーバーが変えるから、Pythonでいい。
もともと忘れ去られていた言語が掘り起こされて使われて、変な仕様だがよく使われるようになっただけ。
Pythonそのものが仮想マシンで動くように変更されたから、CUIで復活したのがいつの間にか、メインプログラミング言語になっている奇妙な現象
ただし、AWS社以外はあまり乗り気でない。
洗練されていない汚い言語は、汚く見せない技術がいる。

778:デフォルトの名無しさん
24/06/26 01:15:56.13 yv8Z2CuH.net
>>764
サブルーチンとは呼び出し元の情報をメモリに保存して、呼び出された側の処理が終わったときにメモリから情報を取り出して元に戻ることだ。
Pythonの関数は後付けであるため、関数と言いながらも実態は処理を書き分けただけにすぎない。
サブルーチンではなく、プログラム内を飛んでいるだけ。
スタック領域にプッシュもポップもしていない。

779:デフォルトの名無しさん
24/06/26 01:18:19.20 yv8Z2CuH.net
オブジェクトという概念もあとから追加したせいで、わかりにくい分類の型ができてしまった。
コレクションという用語にしなかったのも謎

780:デフォルトの名無しさん
24/06/26 10:30:09.24 esETAUdE.net
初心者です、tkinterで作ったGUIの反応が遅い
afterでマシにはなったんだけど
で、マウスクリッ


781:クした時刻(OSでのクリック検知時点のシステム時刻)みたいなの取れる方法ありますか やりたいことは、 クリック時刻とbindした関数が呼ばれた時刻をログに取ってみたい Windowsです bindした関数が呼ばれる以前にユーザの作ったプログラムでクリック把握する方法、そんなのあるか!ではなくて、後追いででも確認できないものかと



782:デフォルトの名無しさん
24/06/26 11:16:31.48 esETAUdE.net
>>771 です
そのごググって下記のページで近いことが出来そうかと
本当は早くする方法が知りたいのだけど、今は何を聞けばいいのかもわからないのでまた後程
URLリンク(taida-eng.com)

783:デフォルトの名無しさん
24/06/26 14:03:59.21 H6JHbd75.net
root.bind('<Button-1>', lambda _: print(datetime.datetime.now())

784:デフォルトの名無しさん
24/06/26 14:53:45.89 esETAUdE.net
>>773 ありがとうございます
早速やってみて、時刻がコンソール出力されることを確認しました

やってみると >>772 のリンク先のpynputを使用したほうが早い時刻を取得しており、
体感的にもpynputの時刻がマウス操作時刻と思われます

また、関数が呼ばれた時点の時刻も表示したら、
pynput -> 関数 -> rootにbindのラムダ関数の順に表示されました
わたくし、何か勘違いしてますでしょうか
pynputクリック検知 2024-06-26 14:46:54.026669
関数コール時時刻 2024-06-26 14:46:55.787093
クリック検知時刻 2024-06-26 14:46:56.076000 <- rootにバインドしたラムダ関数



pynputクリック検知 2024-06-26 14:41:35.307322
イベント発生時y 299
chartkobetu呼ばれました
選択中の銘柄 4208 型 <class 'str'>
個別5mの存在順i番目銘柄= 18 存在列 126 銘柄コード 4208 <class 'str'>
個別チャート日足、呼ばれました
j= 1 dfcoloffset= 1 linecolor= #ffff00
j= 2 dfcoloffset= 2 linecolor= #189af9
j= 3 dfcoloffset= 3 linecolor= #e38089
j= 4 dfcoloffset= 5 linecolor= #00ff00
クリック検知時刻 2024-06-26 14:41:38.955128

785:デフォルトの名無しさん
24/06/26 15:01:12.85 esETAUdE.net
>>774の最後についているのは今作っているコードの動作状況を確認するためprintで出力しているものです
編集中に送信してしまいましたので、時刻検知とは関係ない内容で、時刻の取得時点の比較ができないデータです、すみません

786:デフォルトの名無しさん
24/06/26 17:34:00.99 zF60WWs1.net
>>774
メインスレッドをブロックして何か処理をしてるんでしょ
クリックすると時刻をprintするボタン1つだけ最低限のアプリで
クリックに対する反応がどの程度なのかを確認してみたらいいと思う

787:デフォルトの名無しさん
24/06/26 19:15:47.84 esETAUdE.net
>>776 レスありがとうございます
最小限だと同じ時刻になる、これ以上、細かい桁が測れるのかもよく分からないけど十分速いかと
pynputクリック検知 2024-06-26 19:09:50.128802
関数コール時時刻 2024-06-26 19:09:50.128802
Widgetを追加しながら作っていて、
最初にサンプル的なボタンを押してラベル文字書き変えの
プログラムでは応答性は何の問題にもならないレベルだったので、
まあこんなものかと

788:デフォルトの名無しさん
24/06/26 19:17:32.22 esETAUdE.net
>>777ですけど
あまりに遅いので、cProfileで動作時間を測ってはいて
一番長い関数で138ms、
一方でpynputクリック検知 から 関数コール時時刻 までは1.76s
(14:46:55.787093 - 14:46:54.026669= 1.7604)
もっと遅くなることもある
2秒近くかかる処理なんか作ってないんだけど、さてどうしたものか

789:デフォルトの名無しさん
24/06/26 19:23:16.01 esETAUdE.net
連投すまん
エクセルVBAで作っていたプログラムを練習がてらpython移植してみるんだけど、
VBAでいうDoEventsみたいなものはpython、tkinterには無い、ということでしょうか
ネット検索すると別スレッドで実行しろとか出てくるけど、こっちで考えたほうがいいのかどうか

790:デフォルトの名無しさん
24/06/26 21:33:53.43 UcQAC2Co.net
VBAのDoEventsをどう使っているのか良うわからんが、subprocess.runじゃだめけ?

791:デフォルトの名無しさん
24/06/26 22:20:47.89 esETAUdE.net
>>780 ありがとうございます
VBAのDoEventsが実行されると、OSのqueueに溜まっているユーザー操作が実行されます
もし1周0.2s程度のループをネストして100回やらせると約20秒間かかりきりで(応答なし)になるところ、
内側のループの最初(でなくてもいいけど)にDoEventsを入れれば約0.2s毎にユーザ操作の処理が入るので応答なしにはならず、
0.2sくら�


792:「ならちょっと反応悪いかな、くらいのレスポンスになります(UI処理をやった分だけ、ループの完了は伸びる) さて、subprocess.runを早速調べてみましたが、OSにやらせたいことをコマンド指定でやらせる、ということでしょうか OS側で溜まってることがあるのならこのタイミングで済ませてな、なにがあるのかしらんけど、という使い方はできるのでしょうか もう少し調べてみます



793:デフォルトの名無しさん
24/06/26 22:40:40.89 hSYD6qWQ.net
>>777
てことは君のコードが書き方が原因なのは確定なので
まずは再現性のある最小限のコードを提示してね
それ以外の話はそれから

794:デフォルトの名無しさん
24/06/26 23:01:35.15 esETAUdE.net
>>782
はい、わたしの作ったコードが反応遅いという話をしています
そして最初の質問事項は、マウスクリックした時刻(OSでのクリック検知時点のシステム時刻)みたいなの取れる方法、でした
これはググって解決しました
以降の話はレスをいただいた方への返信と、DoEvents相当のものがあるかという質問です
エクセルはスレチかと思いますのでエクセルの話を続ける気はありません
引き続き自力でも調べてみます

795:デフォルトの名無しさん
24/06/26 23:06:33.48 p3vHraeo.net
PythonのGUIアプリなんかどのみち自分用ツールにしかならないんだから、ipywidgets やstreamlitで十分だろう
元々スレッドが分離されてるからビジー状態にしても全く問題ないよ

796:デフォルトの名無しさん
24/06/26 23:13:46.30 hG8QBVa6.net
pythonのGILのせいじゃないの?
そこまで反応性が重要ならpythonは向いてない

797:デフォルトの名無しさん
24/06/27 00:43:31.20 DskBlp2q.net
別スレッド化したりしてもtkinterに干渉するとランダムな幅の遅れが出る
たとえばプログレスバーをn秒ちょうどで満たすようなコードは書けない(試行毎にバラバラの誤差が生じる)
多分GILとかブロックの問題で、解決できない。これはpythonとtkinterの仕様

798:デフォルトの名無しさん
24/06/27 10:04:13.91 OTNDZ+yC.net
どんな酷いコード描いてるのか観たいから笑わないからぜひ晒してくれ

799:デフォルトの名無しさん
24/06/27 11:44:11.82 THiq2UM5.net
>>786
どの言語でも試行毎に誤差はでる
その誤差を許容範囲内にするだけ
GILの問題でも解決方法はあるよ

800:デフォルトの名無しさん
24/06/27 15:00:13.36 oRm7STy0.net
最新のpythonだとGILオフにできるらしい
そのバージョンでやってみたら?

801:デフォルトの名無しさん
24/06/27 15:06:22.67 WK2H4wzF.net
>>783
async使え
懐かしい問題だなw
VB時代とかはbackgroundwokerとか使ってUIスレッドを止めないようにしてたけど今の時代ならasync/awaitでお前さんのループでの処理書けばおk

802:デフォルトの名無しさん
24/06/27 15:21:15.01 CgIutZfe.net
こんな人がasyncにするとこんがらかりそう

803:デフォルトの名無しさん
24/06/27 15:40:57.25 oRm7STy0.net
pythonのGUIはマルチスレッドで処理を逃してもGILでロックしまくりで遅くなる
かといって重い処理を動かすとブロックする
async使ってもブロックしたら終わりなのは同じ
詰み

804:デフォルトの名無しさん
24/06/27 17:23:36.34 NmEKUmlO.net
CPUバウンドな処理はPythonならマルチプロセスにするのが常識
サブインタープリターも使えるようになったけど本格的に使えるのは3.13から

async使うのはI/Oバウンドな処理
これも常識

805:デフォルトの名無しさん
24/06/27 17:34:34.83 Qbo7b3Vg.net
であればGUI制御が別プロセスになってるソリューションがあんのかな
それかライブラリを叩く粒度を大きくする工夫があるのか

806:デフォルトの名無しさん
24/06/27 18:53:48.27 WKYIGf9o.net
言語やOSに関係なく基本的にどのGUIフレームワークでも
アプリケーションのメインスレッドで
UIイベントのハンドリングやUI操作を行うことが前提になってる
だから別プロセスにするのはGUI制御ではなくてUIに関係ないCPUバウンドの処理
つまり基本的にはGUIフレームワークの守備範囲外

807:デフォルトの名無しさん
24/06/27 19:04:32.49 F52juMPQ.net
>>791
超初心者用スレで無双か。

808:デフォルトの名無しさん
24/06/27 19:09:48.41 oRm7STy0.net
>>795
C#はその辺シームレスなんだよね

809:デフォルトの名無しさん
24/06/27 22:23:02.86 /FJYXYiJ.net
だれも.afterは回答しないのか

810:デフォルトの名無しさん
24/06/27 22:39:51.02 QXPbo1LF.net
そんなafter使うような真面目な人間は5chに来ない

811:デフォルトの名無しさん
24/06/27 23:54:31.61 o3056e9S.net
>>797
言語と並行プログラミング用ライブラリとGUIフレームワークの役割分担はC#も基本的に同じ
でも同期コンテキストの存在とかTPLの使いやすさとかC#/TPL前提のドキュメントの豊富さとか
シームレスに感じる理由が多々あるのはわかる
>>798
afterは使ってるって最初に書いてたよ

812:デフォルトの名無しさん
24/06/28 08:28:53.40 J/XDPL0h.net
async は失敗だったよな
Pythonでスレッド数の消費が問題になるようなものを運用してる奴なんて極僅かなんだからライブラリがわざわざ対応する訳がない
Javaみたいに世間の流行なんかガン無視してマイクロスレッドに賭けるべきだった

813:デフォルトの名無しさん
24/06/28 09:12:53.81 5vFH0KpM.net
Web系の要望だろうけど
Twistedさん殺しにいかなくてもとは思った

814:デフォルトの名無しさん
24/06/28 11:24:07.08 joeyrg+E.net
Twisted懐かしいな
お世話になりました

815:デフォルトの名無しさん
24/06/28 14:11:06.71 sa0QpqCC.net
>>801
GIL外したからマイクロスレッドもありなんだよな
asyncioを駆使して書き直すのも面倒だし

816:デフォルトの名無しさん
24/06/28 17:38:58.38 IKZAS17P.net
グリーンスレッドのことをマイクロスレッドと呼んでる?
であればasyncのTaskがそれだよ

817:デフォルトの名無しさん
24/06/28 17:39:52.27 bVzHKq+e.net
インターネットからのパッケージの入手ができないクローズドな環境で
Pythonを使ってます
Portable運用ができるのでWinPythonを使っているのですが、
同梱されているものがバージョンにより異なり、
PandasやKerasが入っていたりいなかったりするのがちょっと困ってます
自分が必要なものを導入した状態でポータブル化したPython環境、
みたいなものを作る方法はありますでしょうか

818:デフォルトの名無しさん
24/06/28 17:44:05.75 sa0QpqCC.net
>>805
ちゃうよ
ゴルーチンみたいな奴
ちゃんとスレッドは使う

819:デフォルトの名無しさん
24/06/28 18:21:18.71 IKZAS17P.net
>>807
それはグリーンスレッドのスケジューラー/エグゼキューターが
内部でOSスレッドのスレッドプールを使ってるという話でしょ
asyncのTaskをOSのスレッドのスレッドプールで回すのと仕組み的は同じでは?

スケジューリング方法の違いやスタックの有無だったり
スケジューラー/エグゼキューターが言語にビルトインされてて
アプリケーションコードで意識しなくてもいいとか
ゴルーチンとの違いはいろいろあるけど
それはマイクロスレッドの定義とは関係ないんじゃない?

820:デフォルトの名無しさん
24/06/28 18:33:47.84 sa0QpqCC.net
>>808
asyncのTaskは数千、数万も作れないでしょ
ゴルーチンすなわちマイクロスレッドはそれぐらい作れる設計

821:デフォルトの名無しさん
24/06/28 18:50:13.66 IKZAS17P.net
>>809
>asyncのTaskは数千、数万も作れないでしょ
インタープリターだから生成が遅いというだけで
その数は余裕でしょ

822:デフォルトの名無しさん
24/06/28 20:02:09.92 TzaR5aOj.net
>806
ありますよ

823:デフォルトの名無しさん
24/06/28 21:12:32.85 sa0QpqCC.net
>>810
asyncはあくまでIOが並列化できるだけ
計算の実態を数万作れるのはゴルーチンだけ
よって本質が全く違う

824:デフォルトの名無しさん
24/06/28 21:42:27.28 69xrfFOO.net
>>812が間違っていて理解も不足している
各言語のasyncタスクは数万タスク動かせる
Pythonでは試していないがおそらく動くのだろう

825:デフォルトの名無しさん
24/06/28 22:10:06.47 sa0QpqCC.net
>>813
だから動かないって
ゴルーチンは「計算の主体」(って意味わかる?)
を数百万個作れる
これはユーザースペースでコンテキストスイッチをしてるため
おまけにスタックサイズも動的な上に小さい
全てマシンコードレベルで行われる
当然ロックなど存在しない
これがマイクロスレッド

826:デフォルトの名無しさん
24/06/28 22:15:33.56 69xrfFOO.net
>>814
君は非同期タスクについて何も知らない無知者だとわかった
まずは勉強して知識をつけなさい
もう君の相手をすることはない

827:デフォルトの名無しさん
24/06/28 22:21:09.52 sa0QpqCC.net
>>815
御託はいいから動かしてみてね
思い処理を数万個でいいから
Goだと並列でちゃんと動くよ

828:デフォルトの名無しさん
24/06/28 22:35:05.70 b9qgRVqH.net
asyncのtaskはどの言語でもJavaScriptからRustに至るまで数万個並行で動作するよ
そのために各言語に導入されたんだよ

829:デフォルトの名無しさん
24/06/29 03:17:28.84 4AUQ0CVf.net
Elixir は、10万もの小プロセスを起動できる。
メモリが大きいと、5千万小プロセスも。
ただし、小プロセスは、OS のプロセスとは異なるものです
スクエニは、Elixirを使っているらしい
Go の並行処理も、mattn の本に書いてあるけど、
C で、OS の100スレッドを起動したら、
CPU 使用率が高く、12秒も掛かったが、
Goで100 goroutine を起動したら、
6スレッドしか起動せず、9秒で済んだ
Goの方が、CPUコアを効率的に使える
とにかく、スレッドを起動したらダメ!
CPUコアや時間の大半が、スレッドの起動処理に使われるから

830:デフォルトの名無しさん
24/06/29 08:36:40.26 9/qe2SG9.net
知ったかぶりして間違ったこと書く
やんわり間違いを指摘される
反省せずに開き直る!
またこの流れ
ググればすぐわかるような間違いなのになんなんだろうな

831:デフォルトの名無しさん
24/06/29 09:05:37.50 C+0SrrrI.net
ElixrはCPU使う処理は得意ではないよ
処理は一瞬で終わるが大量の処理を必要とするようなものが得意
それこそpush通知とかね
Goのようにマシンコードレベルでコンテキストスイッチを実装してるわけではないから
重い処理を書くと途端に負荷が上がる

832:デフォルトの名無しさん
24/06/30 11:06:44.92 L3wyoKVN.net
Erlang最強

833:デフォルトの名無しさん
24/07/01 05:47:45.32 ppYg1fh2.net
AIならね

834:デフォルトの名無しさん
24/07/07 10:33:44.66 1r2hUTKR.net
pythonで、windows10か11の多画面環境で特定のウインドウのSS撮りたいんだけど
ウインドウハンドル取得してwinAPI叩いてやってるんだけど
メイン画面以外で縦方向に数百pixの座標ズレが出てしまう

こういう書き方しろ、みたいなのご存知の方どなたか…

835:デフォルトの名無しさん
24/07/07 22:05:47.86 5EkJktI1.net
>>823
それのどこがPythonに関係あると思うの?
何らかPythonならではのところに原因がありそうなのであればその辺の詳しい情報を出してくれないことには分かるわけないし、
そうでないならCのサンプルコードを探した方がいいのでは

836:デフォルトの名無しさん
24/07/07 23:45:08.47 y7P/TwV5.net
pythonで取得したいのだからpythonの話でしょうよ
どうせSS部分pythonのライブラリ使うんだから
(ビットマップオブジェクトとかまでapi叩くんならアレだけど)

837:デフォルトの名無しさん
24/07/07 23:57:01.73 5gDGdFIi.net
自分で書いたコード提示して聞いた方が回答つくと思うが

838:デフォルトの名無しさん
24/07/08 00:05:50.31 +/07puKi.net
Windowsのマルチモニタ環境では、各モニタの座標系が異なるため、座標のズレが発生することがあります。この問題を解決するためには、モニタの相対的な位置と解像度を考慮して座標を変換する必要があります

839:デフォルトの名無しさん
24/07/08 00:06:20.59 +/07puKi.net
1. 各モニタの情報を取得する
2. 指定したウィンドウがどのモニタにあるかを特定する
3. ウィンドウの座標をそのモニタの座標系に変換する

840:デフォルトの名無しさん
24/07/08 08:43:58.61 XK4Xq7P1.net
ういんどうずはクソなので超めんどくせえんだわ
おれはウインドウ内のみ欲しくて、その描画myW, myHが分かってる場合しか書いたことないけど
rectたちから計算できるべ多分
DWMWA_EXTENDED_FRAME_BOUNDS = 9
r_rect = ctypes.wintypes.RECT()
ctypes.windll.dwmapi.DwmGetWindowAttribute(hwnd, DWMWA~, ctypes.byref(rect), ctypes.sizeof(rect))
_style = win32gui.GetWindowLong(hwnd, win32con.GWL_STYLE)
if _style & win32con.WS_THICKFRAME:
_win_border_size = win32api.GetSystemMetrics(win32con.SM_CYFRAME)
else:
_win_border_size = win32api.GetSystemMetrics(win32con.SM_CYBORDER)
win_border_size *= 2
c_rect = win32gui.GetClientRect(hwnd)
w_rect = win32gui.GetWindowRect(hwnd)

841:デフォルトの名無しさん
24/07/08 08:45:47.33 XK4Xq7P1.net
r_height = r_rect.bottom - r_rect.top
c_width = c_rect[2] - c_rect[0]
c_height = c_rect[3] - c_rect[1]
w_width = w_rect[2] - w_rect[0]
src_pos_x = (w_width - c_width) // 2
titlebar_height = r_height - c_height - win_border_size
hwndDC = win32gui.GetWindowDC(hwnd)
mfcDC = win32ui.CreateDCFromHandle(hwndDC)
saveDC = mfcDC.CreateCompatibleDC()
saveBitMap = win32ui.CreateBitmap()
saveBitMap.CreateCompatibleBitmap(mfcDC, myW, myH)
saveDC.SelectObject(saveBitMap)
saveDC.BitBlt((0, 0), (myW, myH), mfcDC, (src_x, titlebar_height), win32con.SRCCOPY)
bmpinfo = saveBitMap.GetInfo()
bmpstr = saveBitMap.GetBitmapBits(True)
im = Image.frombuffer('RGB', (bmpinfo['bmWidth'], bmpinfo['bmHeight']), bmpstr, 'raw', 'BGRX', 0, 1)
win32gui.DeleteObject(saveBitMap.GetHandle())
saveDC.DeleteDC()
mfcDC.DeleteDC()
win32gui.ReleaseDC(hwnd, hwndDC)

高DPI対応でこれ入れてるとずれるからそれは知らん
ctypes.windll.shcore.SetProcessDpiAwareness(1)

842:デフォルトの名無しさん
24/07/08 08:48:31.66 XK4Xq7P1.net
訂正
saveDC.BitBlt((0, 0), (myW, myH), mfcDC, (src_pos_x, titlebar_height), win32con.SRCCOPY)

843:デフォルトの名無しさん
24/07/08 21:09:08.76 s8AzJdEo.net
>>829-831
マジで助かりました…上手くいきましたが
コードが全然読めないので精進します

844:デフォルトの名無しさん
24/07/09 01:02:05.27 qs1jvts2.net
posXの計算式どういう理屈でそれなんだろう…
総当たりで試したのかな

845:デフォルトの名無しさん
24/07/09 17:53:08.61 ycuYR4Xv.net
質問失礼します
VersionError: The client version 0.52.3492 is too old. Please update to the latest package on PyPi:
と出てきました、調べたところThis library requires Python 3.8-3.12.と出てきたのですが

自分の使用バージョンはPython 3.10
pipも最新の24に更新済み、他にどこを直せばいいのでしょう

846:デフォルトの名無しさん
24/07/09 18:57:30.17 JSIA10ur.net
すみませんVSCodeのシンタックスハイライトについて質問です

シンタックスハイライトをPython仕様にしたいと思うのですがこんな感じで変えられますか?
とりあえず今のままではメソッドなのかクラスなのか変数なのか全くわからないのでどうもできません
URLリンク(i.imgur.com)

847:デフォルトの名無しさん
24/07/09 19:06:47.56 w695tFt+.net
>>834
PyPiが古いんだろ

848:デフォルトの名無しさん
24/07/09 19:15:18.18 UDSzeDWm.net
とりあえずPython勉強してPython3エンジニア基礎試験に合格して、次の実践の勉強してるがつまらん
何か作った方が面白いが作りたいものもない

849:デフォルトの名無しさん
24/07/09 19:16:34.21 ycuYR4Xv.net
>>836
pypiとpipって同じじゃないんですか
調べいても違いを説明する結果が出てきません

850:デフォルトの名無しさん
24/07/09 19:42:17.96 w695tFt+.net
>>838
モジュールも全部最新なの?
それでも出るなら特定の組み合わせで動かないとかじゃないのか

851:デフォルトの名無しさん
24/07/09 20:05:31.88 qs1jvts2.net
>>835
app = App()
app.func()

変数 = クラス
関数

色がないと判断ができない、というのは論外
小文字、大文字、ドットアクセスで見ろ

強いて言えば
foo.bar と書かれているときbarがメソッドかプロパティかわかりません という話ならまぁ…

まあでもシンタックスハイライトってjsonで設定してあって弄れるから好きにやりな

852:デフォルトの名無しさん
24/07/09 20:15:12.34 ycuYR4Xv.net
>>839
モジュール?
まだ全然わからないけどモジュールですね!ちょっと調べてみます

853:デフォルトの名無しさん
24/07/09 20:18:31.83 qs1jvts2.net
AIとかをやろうとして、言われるがままに色んなものをガンガン入れてしまってる気がする

854:デフォルトの名無しさん
24/07/09 20:27:31.33 KaCb5RY5.net
>>837
自力で作れると思われる範囲に制限しなけりゃ作りたいものはあるだろ?
今時プログラミングなんて自分で手を動かす必要ない
AIに夢を語ってりゃそれっぽいものは簡単にできる

855:デフォルトの名無しさん
24/07/09 23:33:54.51 AsZE7u+u.net
>>835
Class が緑になってしまうけどこんな感じでいい?
これでいいなら拡張機能の「Python」を入れればできるけども

URLリンク(i.imgur.com)

あと VSCode の配色テーマを Dark(Visual Studio) にしていると
拡張機能のシンタックスハイライトが効かなくなるらしい

URLリンク(qiita.com)

856:デフォルトの名無しさん
24/07/10 00:07:36.42 3j7FzYnK.net
色々調べた結果python側の問題とわかったので確認
python --version→python3.10
python3 --version→pythonとしかで来なく

python3.10がちゃんとインストールされてるのかpython3.10 --versionを実行した結果、python3.10℃は、内部コマンドまたは 部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていませ ん。と出てきました

とりあえずアンインストール後再インストールしてみますが
1月くらいまで何事もなく使えてたのにインストールされてませんみたいになることってよくあるのですか?

857:デフォルトの名無しさん
24/07/10 00:54:56.26 B0lLeabB.net
最新のpythonインストールしたんだろ
それで昔の環境が壊れたとかでおかしくなる

858:デフォルトの名無しさん
24/07/10 01:07:23.88 EF6Y7HgP.net
>>845
python3 --versionでPythonと表示されるのはwinの設定→アプリ→アプリ実行エイリアスがオンになってるから。これはMSストア版python用
公式版python3.10をインストールしてもpython3.10という実行ファイルが存在しないのは正常

859:デフォルトの名無しさん
24/07/10 01:59:30.87 5rHX5/PL.net
試行錯誤する前に拡張の説明や設定項目を確認しないのなんで

860:デフォルトの名無しさん
24/07/10 02:34:41.59 3j7FzYnK.net
みなさんありがとうございます
>>846
ID変わってたのでわかりにくかったのすみません>>834です最新では無いと思います


>>847
ということはpython側の問題ではないのですね再インストールしても無駄……?

>>848
今回はModalのセットアップから初めてるのですがそこで躓いてしまって
恐らくpythonに問題があるのかなと

861:デフォルトの名無しさん
24/07/10 03:33:20.73 JKR4u2JY.net
modal要求バージョンより新しいpython入ってるせいで詰まってんじゃないの

862:デフォルトの名無しさん
24/07/10 08:41:03.90 0/GvnarD.net
>>850
Modalの要求バージョンは3.8~3.12
私が使っているのは3.10なので大丈夫だとは思うんですがもう一度使おうとしたプログラムのエラーメッセージを確認してきます

863:デフォルトの名無しさん
24/07/10 15:30:21.08 For1CkV4.net
だいぶ初心者だと思います
ttk.Treeviewのselection_setに関する質問なんですが

まず、やろうとしている事はビューアで
Treeview1 サイトから取得してきたWebページ一覧 選ぶと情報ダウンロード
Treeview2 ページの情報をダウンロードしたサイト一覧(実態としてはダウンロードフォルダにあるフォルダ一覧)
Treeview3 Treeview2で選んだフォルダ内に保存されている個別のページ情報一覧(実態としてはフォルダ内テキスト一覧)
で「Treeview2でフォルダを選び、Treeview3でファイルを選ぶと、ttk.Textに情報表示」はうまくいってます

この時
Treeview1に<<TreeviewSelect>>をbindし、ダウンロードした後Treeview2の内容を消去&フォルダ一覧再取得&表示する関数などを仕込んでいます(後述)
Treeview2も<<TreeviewSelect>>をbindし、Treeview3の内容を消去&選んだフォルダ(Treeview2)の中身を取得&(Treeview3に)表示する関数を仕込んでいます
(Treeview3も<<TreeviewSelect>>をbindし、ttk.Textの内容を更新する関数を仕込んでいますが、多分今回の質問には関係ないです)

問題はTreeview1から選んだ時で、選んだ時にダウンロードするだけでなく、落としたものを自動的にttk.Textに表示しようとしています
これもttk.Textの表示だけなら問題ないのですが、Treeview2とTreeview3も今ダウンロードした項目が自動的に選ばれた状態にしたいのですが、Treeview3だけうまくいきません
エラーメッセージすら出る事なく、何も選択されません(Treeview2は正常に選択されています)

長いのでレス分けます

864:デフォルトの名無しさん
24/07/10 15:30:59.95 For1CkV4.net
>>852続き

原因はおそらくですが、Treeview1にbindした関数内でTreeview2の項目を選択した時、自動的にTreeview2にbindされた関数も呼び出されますが
これの処理がTreeview1にbindした関数の後で実行されるせいで、最後にTreeview3がリフレッシュされているのだと思います
Treeview1の処理中に他のTreeviewを選んだ時「Treeview1の処理中断→Treeview2の処理→Treeview1の処理再開」になると思い込んでコードを書いていたのですが
たぶん実際には「Treeview1の処理完走後、トリガーされたTreeview2の処理」になっているのかなと思っています(テスト用のprintの表示順序などから推測)

最後にTreeview3もちゃんと選択されるようにするには、どうすればいいでしょうか?
Treeview1の処理中、Treeview2を一時的にunbindも試してみましたが、確かにunbindして必要な処理を補完すればちゃんと動くので原因は間違ってなさそうですが
再bindをTreeview1の処理中にしてしまうと、処理後に結局トリガーしてしまって無意味でした

865:デフォルトの名無しさん
24/07/10 17:05:01.94 iit7nof0.net
ボタンは1回押したらロックするか
ブロック機構入れないと
連打したり、別のボタン押したりしたときに収拾つかなくなるで

たとえば
bind関数内の最初に、if treeviewselected:returnみたいなの書いて排他動作にするとかさ

866:デフォルトの名無しさん
24/07/10 18:37:27.41 For1CkV4.net
>>854
丁度それをやってみて正常に動いたところでした、ありがとうございます
やはりその辺の処理になるんですかね

ロック機構、確かに要りますね
趣味で場当たり的に作ってると、そういう構造的なノウハウとかは中々身につかなさそうですね……

867:デフォルトの名無しさん
24/07/10 21:14:08.65 8aePid6X.net
GUIはGUI用のノウハウあるで、書きまくってたら身についていくよ
ロジックと表示系分離するとかもそうだしさ

868:デフォルトの名無しさん
24/07/11 00:14:02.11 gnKs0VpL.net
pythonでpyenv pipx poetry使えるレンタルlinuxサーバ知らん??

869:デフォルトの名無しさん
24/07/12 03:05:52.22 Fv9K4MWW.net
whisperを使ってみようと思ったんですが、次のコードでどうあがいても
FileNotFoundError: [WinError 2] 指定されたファイルが見つかりません。

import whisper

with open("./test.txt", 'r', encoding='utf-8') as file:
  content = file.read()
print(content)

uri = "./test.mp3"
model = whisper.load_model("small")
result = model.transcribe(uri, verbose=True, fp16=False, language="ja")

test.txtはちゃんと読み込まれて表示されるのに
resultのところでどうしてもファイルが見つからないと言われます
audio = whisper.load_audio(file=uri)
をresultの前に噛ませたりしても、ここで見つからないと言われます

絶対パスにしてもwavとかoggとか試しても無駄だし、拡張子消してももちろん無駄です
ファイルの位置を変えたり、全然違う場所の全然違う音声ファイルを読み込もうとしても無駄です
pipしなおしてもPC再起動しても無駄です
一体何が悪いのでしょうか

870:デフォルトの名無しさん
24/07/12 03:18:10.13 6z6Lg9Zs.net
そもそもresult前に読んだパス認識してんの?
path.existsみたいなのしなはれ

871:デフォルトの名無しさん
24/07/12 03:55:38.40 Fv9K4MWW.net
>>859
とりあえずこれを直前に挟んでみましたがTrueでした
print(os.path.exists(uri))
ダミーにめちゃくちゃ入れたらもちろんFalseなので、result以外はちゃんと動いてるようなんですが

872:デフォルトの名無しさん
24/07/12 04:14:19.09 6z6Lg9Zs.net
ffmpeg関係は?

873:デフォルトの名無しさん
24/07/12 05:06:05.29 Fv9K4MWW.net
>>861
すみません、それでした
解決しました、ありがとう
雑に使おうとして、基本的なところが抜けてました

874:デフォルトの名無しさん
24/07/18 21:35:07.90 atiQW+Xs.net
いまtkinterでGUIをMVCで作ろうとしてるんだけど
これウィジェット自身で完結する変数やメソッドはウィジェット側に書くわけじゃん
するとあるウィジェットに関係する変数やメソッドが、viewとcontrollerに点在することになるけどそれでいいのか?

全部無理矢理controllerに押し込んだら、こんどcontrollerが肥大化するけど、それはそれでどうなんだという気もする

875:デフォルトの名無しさん
24/07/18 23:22:50.39 61oenaL1.net
>>863
MVCは死ぬほどバリエーションがあるのでこれといって何が正解かとはかない
しかし成功しているモデルの一つであるiOSでのMVCを説明してみる
まずコントローラはモデルとビューを保持する
コントローラがユーザーからのイベントを受け取り対応するモデルのメソッドを呼ぶ
モデルのメソッドが呼ばれ状態を変更する
完了後にコントローラへ通知する
そしてコントローラは対応するビューを再描画する
正直古臭いがある程度成功しているアーキテクチャだ

876:デフォルトの名無しさん
24/07/19 05:30:02.76 QNeV9bba.net
vscodeでtomllib使って値読み込んでもpylanceが上手く型を認識してくれない(anyになる)んだけど
tomlって型付きじゃなかったっけ? おま環かこれ??

877:デフォルトの名無しさん
24/07/19 05:40:24.28 +oFdaKCd.net
石丸伸二さん取材の最前線

「取材不足」さんのYouTubeチャンネル
URLリンク(youtube.com)

「取材不足」さんのX(ツイッター)
URLリンク(x.com)

石丸伸二さんは天才ですね!

878:デフォルトの名無しさん
24/07/19 06:02:53.03 2drNjBF3.net
>>865
どんなデータ読むかわからんなら静的解析できない
データの型が想定できるなら自前のエンティティクラスにいったん格納してみては?
健全にやるならバリデーションする

879:デフォルトの名無しさん
24/07/20 06:12:19.62 rQPoAcvH.net
Pythonで組んだ自動処理はレンタルサーバー使ってる?

880:デフォルトの名無しさん
24/07/20 17:56:48.97 pd3T6vIK.net
>>868
日本語検定何級?

レンタルサーバーを使っているかどうかが先に評価する条件だろ?

881:デフォルトの名無しさん
24/07/20 17:58:02.44 pd3T6vIK.net
>>865
バイナリーデータを扱うのに型が自動で決まる方が気持ち悪いだろ

882:デフォルトの名無しさん
24/07/20 18:30:49.82 rQPoAcvH.net
>>869
スレタイの通りなんだけど、なんで煽ってるの?

883:デフォルトの名無しさん
24/07/20 18:44:11.27 pd3T6vIK.net
レンタルサーバーを使っているかどうかはここで聞かなくてもいいだろうに

初心者だとレンタルサーバーの存在を知らない可能性が高いと思うけどな。

レンタルサーバーならわざわざPythonを使う必要もない。

884:デフォルトの名無しさん
24/07/20 18:56:40.19 g11axyeV.net
>>870
でもパーサーは内部的にpython用の型に変換してるんだから、それを静的型チェッカに伝えるだけじゃねーのかなと思わなくはない

885:デフォルトの名無しさん
24/07/20 19:10:13.69 4S4L7THY.net
パーサーあるいはバリデータを通して特定の型に適合することがわかったらその型にキャストしてやればいい。

886:デフォルトの名無しさん
24/07/20 19:39:36.45 pd3T6vIK.net
それだとデータがおかしくない前提の設計になる

887:デフォルトの名無しさん
24/07/20 19:43:13.82 JfCCJ2ok.net
setdefaultencoding()

888:デフォルトの名無しさん
24/07/20 19:43:43.52 pd3T6vIK.net
彼は単にTOML形式のファイルが間違っているだけの話をしているのかもしれない。

889:デフォルトの名無しさん
24/07/20 19:44:44.42 g11axyeV.net
>>875
データおかしかったらパースエラーでしょ
型チェッカが作動する以前で終わる話やん

890:デフォルトの名無しさん
24/07/20 19:45:09.15 pd3T6vIK.net
決められたフォーマットでない設定ファイルを読み込んだときの動作は処理を止めるのが正しい実装。

891:デフォルトの名無しさん
24/07/20 19:46:17.83 pd3T6vIK.net
>>878
本人の勘違いだろう
設定が間違っているのをライブラリの問題にしていると思われる

892:デフォルトの名無しさん
24/07/20 19:49:49.46 g11axyeV.net
>>880
読解力ゼロ民なん?
質問は、型チェッカーが型情報読めません で
それはそれで合ってる(型チェッカーは認知しないから)が回答で
付随して、パーサーは内部で型確定してるんだから、型チェッカーがそれ読みゃいいのにね って言ってるだけだろ

893:デフォルトの名無しさん
24/07/20 20:09:38.66 4S4L7THY.net
>>875
データがおかしくなければ問題なし、おかしければNG。それのどこに問題が?

894:デフォルトの名無しさん
24/07/20 20:10:26.26 pd3T6vIK.net
彼は想定どおりのデータ型にならないと言っている

895:デフォルトの名無しさん
24/07/20 20:56


896::22.33 ID:4S4L7THY.net



897:デフォルトの名無しさん
24/07/20 23:13:59.91 3JBVPj+L.net
初心者に何一つ解決法を提示できない、あおる専門職が、また暴れているのか。

898:デフォルトの名無しさん
24/07/20 23:38:05.16 nWXlJ8rt.net
>>881
>付随して、パーサーは内部で型確定してるんだから、型チェッカーがそれ読みゃいいのにね って言ってるだけだろ
静的型チェッカーにプログラムを実行して外部TOMLファイルを読み込んでパースしてから型チェックしろと?
頭おかしくね?

899:デフォルトの名無しさん
24/07/20 23:43:19.64 n5damDMV.net
初心者です
Windows とmacで全く同じ環境を用意してもvscodeでjupyter が使えるのはmacだけで困っています。

ryeで環境構築していてpythonのバージョンは3.7~3.12それぞれで試しました
ライブラリはrye add jupyterのみ
Vscodeの拡張機能はpythonとjupyter

Macでは問題ないですが、Windowsでipynbを実行すると”connecting to kernel“から進みません
pyファイルで#%%を用いても同じです
カーネルの指定はしています

今はしょうがないのでwindowsではjupyterlabを起動して使っています
ライブラリのバージョンとwindowsの相性が悪いんですかね…?

900:デフォルトの名無しさん
24/07/20 23:54:41.64 NXGRRfPo.net
初心者でryeなんて非標準なツールつかうから切り分けできなくなる

901:デフォルトの名無しさん
24/07/21 00:10:32.64 H6hpsSWg.net
>>869
え?これ何?低学歴知的障害朝鮮人?

902:デフォルトの名無しさん
24/07/21 00:19:47.32 7gp2nlNY.net
さすがにこの自演は恥ずかしいw

903:デフォルトの名無しさん
24/07/21 04:12:49.88 6bp7hRiy.net
>>888
解決しました!分かりやすい解説ありがとうございます!

904:デフォルトの名無しさん
24/07/21 10:56:10.38 6bp7hRiy.net
質問しておいて解決しましたとだけ書くのも失礼なので…
pyvenv.cfgの中の指定のpython を変えたら解決しました。
つまり標準のpythonをryeのものにしているのがwindowsのjupyterではよくないようです。
仮想環境でごちゃごちゃやった感じではセキュリティの問題っぽいのでそっちいじればなんとかなりそうですが…
結局macではvscodeを使ってwinではjupyterlab使うことにしました
お騒がせしました

905:デフォルトの名無しさん
24/07/21 14:59:38.69 AhhCkcZ5.net
なんかお前一生環境構築してない?

906:デフォルトの名無しさん
24/07/21 15:04:29.78 AhhCkcZ5.net
プログラミングできないやつに限って環境だけ作って満足するやつはスゲー多いんだよな
結局何も書けないからやることがないというw

907:デフォルトの名無しさん
24/07/21 15:13:06.46 6bp7hRiy.net
>>894
FDTD法やってます!
今は高速化目指してます💪

908:デフォルトの名無しさん
24/07/21 15:52:43.89 AhhCkcZ5.net
>>895
そんなんやってる奴が初心者なんだ?

909:デフォルトの名無しさん
24/07/21 16:38:54.61 XlsTZxiY.net
>>896
はい!

910:デフォルトの名無しさん
24/07/21 16:43:16.67 AhhCkcZ5.net
>>897
フフッ


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