暇つぶし2chat TECH
- 暇つぶし2ch2:感的に使える。Run codeボタンあり。 ttp://pastebin.com/     まずまずシンプル。 ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。 ◇Python公式◇ http://www.python.org/ ◇まとめwiki◇ ttp://python.rdy.jp/wiki.cgi 〇前スレ〇 【まず1嫁】くだすれPython(超初心者用) その55 https://mevius.5ch.net/test/read.cgi/tech/1633070807/ 次スレたては >>985 あたりが挑戦する。 ### END OF TEMPLATE ###



3:デフォルトの名無しさん
21/12/27 16:38:48.09 5EmWEway.net
>>1
スレたて乙です。
すみません。前のスレの最後の方に質問させていただいたものです。
前のスレに続いて相談させて下さい。
私のやりたいことは、抽象的な説明になりますが、webからとある情報を取得してきて、それらを色々と解析することです。
その為、以下の構成を考えています。
- webから情報を取得して、オブジェクトにして返すライブラリ(1個)
- 上記のライブラリを利用して情報を取得し、解析を行い結果を表示するコマンドラインのアプリ(複数個を予定)
その為、ディレクトリ構成は以下を考えています。
- weblib(Webから情報を取得して、オブジェクトにして返すライブラリ)
-- weblib
--- web_accessor.py
--- data_type.py
-- tests
--- test_web_accessor.py
--- test_data_type.py
- commandline1(コマンドラインのアプリ)
- commandline2(コマンドラインのアプリ)
上記のcommandline1,2の内部の構成をどうすべきかよくわかりません。
また、前のスレでコメントいただいておりましたが、自作のライブラリの参照方法も何がベストなのかわかっておりません。
よろしくお願いいたします。

4:デフォルトの名無しさん
21/12/27 17:01:38.22 3oj0wwuR.net
weblib/__main__.py
weblib/commands/command1.py
weblib/commands/command2.py
weblib/web_accessor.py
weblib/data_type.py
とかやる
DjangoやScrapyのような大御所フレームワークでプロジェクトを作ると概ねこのようね構成になる
command1やcommand2はサブコマンドとして定義する

5:デフォルトの名無しさん
21/12/27 17:08:01.54 RQJfeX+1.net
git cloneしてきて、pip install -e .できるようにパッケージ化するのかいいよ
そうすれば、普通にimportするだけで使える

6:デフォルトの名無しさん
21/12/27 17:09:15.95 RQJfeX+1.net
結局はデプロイ方法の話だよね?違う?

7:デフォルトの名無しさん
21/12/27 17:37:15.70 5EmWEway.net
>>3
なるほど。
コマンドラインアプリ程度ならば、ライブラリと一体化させ、複数の命令があっても、サブコマンドとして実装するのが正解かも知れませんね。
>>4
すみません。個人で使いたいだけのライブラリもpip等を意識すべきでしょうか?
3rdパーティーのライブラリを使うのにpipは非常に便利なのですが、自作するとなると勉強が必要そうに感じました。
>>5
すみません。私はおそらくpythonでのデプロイの意味が理解出来てないです。
個人でのみ利用するライブラリとアプリケーションを作成する場合のソースコードの構成が知りたいです。
アプリケーションがコマンドライン程度の場合、>>3さんの提案が良い様な気もしていますが、いかがでしょうか?

8:デフォルトの名無しさん
21/12/27 18:34:46.34 mNLCsv7t.net
1.command1を実装するためにweblibで不足を補ったり編集作業をしてcommand1完成
2.command2を実装するためにweblibで不足を補ったり編集作業をしてcommand2完成
3.command1と2完成したはずなのにcommand1が動かない。その原因は2のweblib編集作業
4.command1が動くように修正したら今度はcommand2が不具合抱える
(以下無限ループ)
なんて初心者が陥りがちな罠あるからなw
ライブラリ化やパッケージ化できたらいいし、そうやるのが理想だけど
フォルダ構成の勉強したいとかじゃなく動くものを作りたいだけなら何も考えずに必要なファイルをコピーコピーで二重、三重に抱えるのも手だよ

9:デフォルトの名無しさん
21/12/27 19:34:55.86 bZjwTURQ.net
>>6
知ってるとは思うけど、pipはローカルに落としてきたファイルにも使える
そうすれば、そういうことで悩む必要はなくなる
絶対そうするべきとまではいうつもりもないし、あくまで選択肢の一つとして挙げただけだよ

10:8
21/12/27 19:37:59.09 bZjwTURQ.net
ローカルにというかPiPIを介さずにと言いたかった

11:デフォルトの名無しさん
21/12/30 23:48:26.78 1PjrU/kY.net
>>7-9
アドバイスありがとうございます。
色々と教えていただいたのですが、結局動作させることを優先してモジュールやパッケージは無視して、実装してしまいました。
空行も含めて1万行ちょっとですが、ファイルは3個のみで、全部同じディレクトリにあります。
__init__.pyや__main__.pyは作らず、ソースコードを直接叩いています。
いまいち、パッケージっぽく作成した場合のimportの動作がよくわからないので、おいおい勉強していきます。
何かこのあたりのpythonの常道を学べるものがあれば教えて下さい。
とりあえず、仕事が暇になったら、Effective Pythonでも買おうかと思ってます。(私は若い頃にEffective Javaを読んで感動したので)

12:デフォルトの名無しさん
21/12/31 22:28:10.79 c0ALKO7s.net
>>10
ここ
URLリンク(packaging.python.org)
参考にしてる本とかサイトとかで紹介されてる方法と違ったりする時はパッケージ構成だけでもこっちに合わせてやった方がいいと思う

13:デフォルトの名無しさん
22/01/01 06:43:12.13 96//zQri.net
> お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
クソチョンはウンコを食べる糞食人種w
朝鮮人はゲリ便をじゅるじゅると
うまそうに食うw

14:デフォルトの名無しさん
22/01/01 11:46:28.70 p7FpLgzA.net
RPGを作ります
モンスターのクラスを100匹ぶん設定します
それぞれ50-100行です
モジュール分割は1モンスターごとか
monsters.pyにベタ書きか
種族や出現場所など、何らかのグループ単位か
どれでもいいとは思うんですが、良し悪しの経験談をお聞きしたい

15:デフォルトの名無しさん
22/01/01 11:52:14.80 hoyIdEI/.net
>>13
モンスターより
モンロー効果を勉強したまえ
装甲撃ち抜くには必要だぞw
SMAW ロケットランチャーの方が良いかも

16:デフォルトの名無しさん
22/01/01 12:18:25.91 uo0q0ouM.net
>>13
モンスターパッケージの下に
なんらかのグループ単位でサブパッケージ
サブパッケージの下にモンスター単位のモジュール
管理しやすいようにするのが目的だから
1モジュールにベタ書きでも管理しやすいと思えばそれでもいい
変更・入れ替え・追加の単位で考えるのが基本
あとグループ化は排他的な分類じゃないと破綻するので
将来を見据えても種族や出現場所が1モンスターにつき1つに必ず決まるかどうかの考慮が必要

17:デフォルトの名無しさん
22/01/01 13:24:06.66 Je/lt7i4.net
モンスターの種類ごとにclassを作る
ただそうするとclassの種類が増えて面倒になるから、どのモンスターも全部同じinterface派生にしておく
そうすると地図モジュールではそのinterface一種類を処理できるようにするだけで、全モンスターを処理できるようになる
さらに宝箱は移動しないモノという扱いで同じinterfaceにしておいたり
奇襲エリアやpopエリアなんかも透明なモノとして同じinterfaceにしておくと、モンスターに限らず地図上にあるものすべて同じ規格で簡単に処理できるようになる

18:デフォルトの名無しさん
22/01/01 13:49:47.45 p7FpLgzA.net
>>15-16
なるほど。勉強になります

19:デフォルトの名無しさん
22/01/01 18:02:52.86 CvAU7HCi.net
ただしそのinterfaceを適当に設計するとあとで地獄を見る

20:デフォルトの名無しさん
22/01/01 18:26:10.69 n4zdCVCH.net
例えば、ドラゴンゾンビが、
ドラゴンクラス・ゾンビクラスのどちらから派生すべきか、設計が難しい
ドラゴン種族で、ゾンビ属性を持つ?
または、ゾンビインターフェイスなのかな?

21:デフォルトの名無しさん
22/01/01 20:13:57.80 KzNGE8bI.net
未来を見通すことなんてできないんだから、インターフェースという考え方自体が無理筋かもしれない。

22:デフォルトの名無しさん
22/01/01 21:40:29.96 Mdgn9Um5.net
何回もリファクタしたらいいんよ

23:デフォルトの名無しさん
22/01/01 23:04:32.24 gODAdL3c.net
基底クラスと種族クラスを受けた個別モンスタークラスのモジュールが100個
monsterデータベースにそれらがimportしてあって
monster.pop(_id)とかdrop(_id)とかできる
みたいなことなのかな

24:19
22/01/01 23:30:19.09 n4zdCVCH.net
例えば、ドラゴンゾンビには、
ドラゴン種族から継承した、ブレス攻撃がある
一方、ゾンビ種族から継承した、臭い息攻撃もある
こういう場合に、多重継承が無いから困る
だから、ドラゴン種族を継承(is-a)して、
ゾンビ種族をインターフェイス(has-a)にするとかしないと作れない
言語に多重継承が無いから、思っているような攻撃が作れない

25:デフォルトの名無しさん
22/01/01 23:56:38.32 gKSwaXD0.net
>多重継承が無い
え…

使わないに越したことはないけどな

26:デフォルトの名無しさん
22/01/02 02:44:24.58 6S/y40F7.net
URLリンク(docs.python.org)
後付の抽象基底クラス(ABC)という仕組みがあって
それの仮想的サブクラスをつかえば多重継承ぽいことができる
具象クラスで直接多重継承はしないのでその分冗長だけど見通し悪くはなりにくい

27:デフォルトの名無しさん
22/01/02 13:59:15.78 7TGqBUEp.net
>>23
普通はモンスター has a 攻撃タイプ(複数でも可)にする
設計がおかしい
てかゲームのモンスターの種別を継承で作るとか、割と悪手な気がするけどな。
ゲームバランスの調整が難しくなるし、メリットがなまりない。
業務システムのように、先にそれなりに決まった仕様があって作るものではないのだから細かいところまで共通化はしない方がいいと思うけどなあ。

28:19
22/01/03 06:15:56.77 BdaWP45p.net
確かに、継承よりも、has-a の方が柔軟
ただ、遺伝するものだから継承の方が、イメージしやすい

29:デフォルトの名無しさん
22/01/03 10:56:31.00 k+5SldWu.net
おじさん種族も「臭い息」を has-a 出来る

30:デフォルトの名無しさん
22/01/03 17:24:11.26 paNo/4Zy.net
>>27
二つの種族の遺伝子が混ざり合ったキメラをis-aで考えることの方がおかしいと思うな。
大体遺伝子はタンパク質を発現させるコードであってタンパク質そのものの機能を直接記述している訳ではないのだから、
機能の直接記述を行うプログラミングの継承の概念と結びつけた方がイメージしやすいというのは不適切なのでは?
まだメタプログラミングなどの領域で言及するなら議論の価値があるのかもしれないが。

31:デフォルトの名無しさん
22/01/04 16:57:48.92 Gsj/g84L.net
1次関数の計算はnp.polyfitでできると検索しててわかったんですが、
例えば以下のようにx、yの傾きに変化がないxy座標であれば正しい計算結果がでます
x_co=[-1,10]
y_co=[-3,20]
a,b=np.polyfit(x_co,y_co,1)
x = -1
y = a*x+b
print(y)
この計算結果は-3です
ただ以下のように傾きが変化する座標に変更すると正しい計算結果がでません
x_co=[-1,0,10]
y_co=[-3,0,20]
これだとxが-1から0までのaは3で、0から10までのaは2ですよね。
間に0を挟んでいますけどx,yのデフォルトの数値は0としたいのでそうしたんですが
aが変化する場合にnp.polyfit以外で正しい計算結果がだせる方法ってないですかね?
座標の指定を
x_co=[0,10]
y_co=[0,20]

x_co=[-1,0]
y_co=[-3,0]
2つ別々に計算してやればうまくいきますがスクリプトが長くなってしまいます
そもそも座標にx 0 y 0がありbが0になるような比例式になってるんで
一次関数で処理すること自体がおかしいのかもしれないですが

32:19
22/01/04 17:32:33.14 vw+5Ecnq.net
例えば、ゾンビでもないおじさん種族が、ゾンビ種族の臭い息を使うと、何でも有りになる。
継承種族でもないのに、その技が使えたら、興ざめする。
現実性が無さすぎる
おじさんが、キノコ種族でもないのに、幻惑を使えるとか
ある遺伝子から作られた種族が、ある特殊な技を使える方が、現実的

33:デフォルトの名無しさん
22/01/04 17:51:12.51 4V7DoHkq.net
>>30
傾きの違う一次関数の組み合わせと分かっているのに、1本の一次関数で処理しようとするのはおかしい
言ってるように別々に計算するか、二次以上の関数でfitさせるのが真っ当な方法

34:デフォルトの名無しさん
22/01/04 18:39:40.45 /u8cVvVZ.net
>>31
そんな定義しないだけで済むんだけど、そこもコードで規制かけたいなら
種族にのみ特技インターフェイスを付与可として
おじさんは種族を継承するのではなくコンポジションで持たすとかね

35:デフォルトの名無しさん
22/01/04 22:22:14.46 Gsj/g84L.net
>>32
二次以上の関数でfitさせるっていうのはどうやればいいんですかね?
記述が短くなるならそっちを使っていきたいんですが

36:デフォルトの名無しさん
22/01/04 23:13:45.44 IER2ZZly.net
最小二乗法

37:デフォルトの名無しさん
22/01/04 23:46:52.83 l7pw94h+.net
>>34
2次以上の関数でfitさせたほうが本当にいいのか考えた方がいいよ。
何を言っているのかわからなければ、多項式フィッティングについて勉強することをお勧めする。

38:デフォルトの名無しさん
22/01/05 00:25:58.93 mIcC+Z88.net
>>34
np.polyfitのドキュメント読め
3つ目の引数は飾りじゃないぞ

39:デフォルトの名無しさん
22/01/05 05:01:24.11 TmObc2bo.net
引数を2以上にして二次関数以上?でyを求めるとかそういうことですかね
x_co=[-1,0,10]
y_co=[-3,0,20]
a,b,c =np.polyfit(x_co,y_co,2)
x = 5
y = a*x**2+b*x+c
print(y)
ここのyは10になってほしいんですが、計算結果は12.272727272727275です
0を堺にして傾きを別々に設定するならやはり
x_co=[0,10]
y_co=[0,20]

x_co=[-1,0]
y_co=[-3,0]
別々の座標でy = axとして計算したほうがいいんですかね

40:デフォルトの名無しさん
22/01/06 07:42:16.32 ao2M/tK+.net
>>38
だから36の通りで、フィッティングに対する基礎知識が足りなすぎる。
今回の場合はその通り。
0で分割してやるしかない。
適切な分割個所がわからない場合でもやりようはある。
要はモデルを作り、そのパラメータを求めるということがフィッティング。
分割個所が0とわかってるなら2パラメータの1次フィッティングになるだろうし、分割個所も分かってないが
折れるということまではわかっているなら分割個所も含めた3パラメータ のフィッティングになる。

41:デフォルトの名無しさん
22/01/07 17:36:11.67 cKWusGB0.net
そうですか。xの値が0以上かどうかで分岐を作って計算するようにします。
どうもです。

42:デフォルトの名無しさん
22/01/11 13:22:37.26 08WJfgzC.net
機械学習で文字認証突破をしてみようとしたのですが
文字以外の模様がある場合の難易度がパないです
所謂ゴミ取りというやつですが、小さいゴミだったり薄いゴミだと簡単に突破できるのですが
例えば後ろに濃い目の線が放射状に走ってるだけで
その線をシャープにして消そうとすると文字も消えるので
急に突破できなくなります
何かいいアイデアはありますでしょうか
自分で考えたのは、そのゴミの配置パターンを機械学習して
その部分をignoreする、みたいな感じですがなかなかうまくいきませんし
パターンが変更された、となると対応コストが高すぎるかなと思います

43:デフォルトの名無しさん
22/01/11 13:35:10.43 4qGoqi+c.net
その手のはもうコピペコードで突破できるから最近見かけなくなったな
URLリンク(keras.io)

44:デフォルトの名無しさん
22/01/11 13:39:49.49 08WJfgzC.net
そのコードも試したことはあるのですが
文字の整列がキレイな場合に成功率高かった記憶があります

45:デフォルトの名無しさん
22/01/11 15:29:25.95 4qGoqi+c.net
文字の整列が汚いときにうまくいかないなら汚い学習データを使うとか
文字位置だけを検出する前処理(オブジェクト検出)を使う多段処理にするとか
yoloのようなモデルで一気にやらせるとか

46:デフォルトの名無しさん
22/01/11 15:30:11.11 gisUZ/Sj.net
今でも機械ではなくて人間がやっているのを
調べるために裏に模様が入った、ガタガタの文字を
入力させるのがあるよね
簡単に突破できるのならもう使われなくなっているはずだよね
それだけ機械でやるのは難しいということだ

47:デフォルトの名無しさん
22/01/11 15:45:34.70 4qGoqi+c.net
いやいや。もう見かけないだろ
2018の記事
「CAPTCHA」と呼ばれる“グニャグニャ文字”。これをGoogleが使わなくなった理由とは
URLリンク(www.itmedia.co.jp)

48:デフォルトの名無しさん
22/01/12 00:33:49.20 pGVSG9FU.net
Google以外のサービスで普通に見る

49:デフォルトの名無しさん
22/01/12 01:07:08.90 UYbilz8d.net
存在はするがチェックボックスか画像選択が大半じゃない?
時代に追従できてないサイトが多数残っているだけで

50:デフォルトの名無しさん
22/01/12 07:04:30.99 piyjaY7r.net
多数残ってるのか見かけないのかどっちだよwww

51:デフォルトの名無しさん
22/01/12 11:10:51.18 iVvvYh4P.net
キャプッチャ自体がが学習用のデータ集めに使われてるみたいな記事をみた記憶がある

52:デフォルトの名無しさん
22/01/12 16:01:07.63 96XTJDEM.net
常駐GUIをtkinterで書きました
pyinstallerでexe化して、windows上でローカルアプリとして使います
exe実行したときに、既に常駐していたらソイツをフォーカスする(二重起動禁止)にするには
どういう仕組みを実装したらよいですか?

53:デフォルトの名無しさん
22/01/12 16:33:16.11 oXHkYdgO.net
ウインドウズよりオマンチョーズが好きです

54:デフォルトの名無しさん
22/01/12 17:00:40.07 ukuM5pRX.net
初心者にもほどがある質問で申し訳ないんだけど教えて下さい
pythonインストールしたんだけどrequirements.txtを使ってインストールっていうのがよくわからないです
下のサイトによればpip install -r requirments.txtを使えって書いてあるんだけど
(URLリンク(buildersbox.corp-sansan.com))
そもそものrequirments.txtっていうのをどうやって認識させるんですか?
何処かのフォルダに置くとかパス指定するとかそういう感じです?
調べたんですがrequirementsの作り方ばっかりで初心者に使い方教えてくれる場所がなくて途方に暮れてます
詳しい方ご教授いただけると大変助かります、よろしくお願いします

55:デフォルトの名無しさん
22/01/12 18:07:08.80 7dI4mng1.net
pip install -r requirments.txt
このコマンドを実行するときのカレントフォルダにあるrequirments.txtが認識されて、そこに書かれてるのがインストールされる

56:デフォルトの名無しさん
22/01/12 18:21:16.13 ukuM5pRX.net
返答ありがとうございます!
つまり
1.requirements.txtの入ったフォルダを開く
2.すぐにcmdで pip install -r requirments.txt を実行
の順でやればrequirements.txtの入ったフォルダがカレントフォルダとして認識されてるということですよね?
ただ上記の手順でやったのですが以下のようなエラーが帰ってきてしまいました
ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'requirments.txt'
requiremens.txtは存在してるのになぜ認識してくれないのかわからなくて困ってます

57:デフォルトの名無しさん
22/01/12 18:26:43.27 ukuM5pRX.net
すみません!pip install -r の後にrequirements.txtを直接投げ込んだら成功しました
前にパスを試したときと何が違ったのかよくわからないのですが…多分なにかミスってたのでしょうね
しょうもない質問にお時間割いていただき本当にありがとうございました
pythonが全く分かってないので何処かのフォルダに入れなきゃいけないのか、とか死ぬほど悩んでたので本当に助かりました!

58:デフォルトの名無しさん
22/01/12 18:28:34.85 60+8sbQA.net
>>55
>1.requirements.txtの入ったフォルダを開く
>2.すぐにcmdで pip install -r requirments.txt を実行
>の順でやればrequirements.txtの入ったフォルダがカレントフォルダとして認識されてるということですよね
使ってるエディタとか環境にもよるけど、そうなるとは限らない
この辺はコマンドプロンプトの知識になってくるけど
①cmdを開いたときにpwdとコマンドを打って、今参照してるパスを確認する
 (lsコマンド使うと、フォルダ内のファイル一覧も取得できるから、そこにrequiremens.txtがあるかも見る)
②違ってたらcdコマンドを使って、requirements.txtがあるフォルダまで移動する

59:デフォルトの名無しさん
22/01/12 19:36:56.23 ukuM5pRX.net
>>57
コマンドプロンプトってそういう使い方も出来るんですね
調べたいことを調べる前提の知識がないという辛さを実感しましたw

60:デフォルトの名無しさん
22/01/12 20:26:47.06 piyjaY7r.net
>>51
WindowsならCreateMutexを使うのはどうか
URLリンク(blog.cfm-art.net)
file lockもいいが、プロセスkillした時にシグナルを処理しないと💩が残るのが難
CreateMutexで作ったmutexはプロセスが死ぬと自動開放されるのでその懸念はない

61:デフォルトの名無しさん
22/01/13 08:21:54.14 quab12cO.net
>>59
ほーこういうのがあるんですね、勉強になりました
stack overflowにpywin32.showwindow使うパターンもあって参考になりました
両方試してみます

62:デフォルトの名無しさん
22/01/13 16:55:50.77 ZpHCuJHb.net
DearPyGuiで書くのもおすすめ
URLリンク(github.com)
多重起動するかどうかの実装もできたはず

63:デフォルトの名無しさん
22/01/13 23:17:23.13 quab12cO.net
>>61
あらーこれいいですね
simpleguiしようかなと思ってたけど
こっちためしてみようかな
pyinstallerちゃんがヒステリー起こしそうだけど

64:デフォルトの名無しさん
22/01/17 12:00:21.23 1a+vUoH6.net
centos7にデフォルトで入っているpython2.7.5の環境です。
ターミナルでpythonと実行し、インタプリタモードにして、以下コマンドを実行したところ、centosログイン時の挙動がおかしくなりました。
>>> import gi
>>> gi.require_version('Gtk', '3.0')
>>> from gi.repository import Gtk
>>> ショートカットキーctrl+dで終了
上記設定を一旦クリアしたいです。 
ホームディレクトリのドットファイルのどこか(~/.???)に情報が保存されているのではと思うのですがどこにあるかわかりますか?
もしくはクリア方法がわかれば教えてください。

65:デフォルトの名無しさん
22/01/17 14:42:52.43 /Vbqcq7/.net
>>63
特に残ってないから気にすんな
ログイン時の挙動がおかしくなった原因は他にある

66:デフォルトの名無しさん
22/01/23 01:27:37.70 9kMDQdv1.net
直接Pythonではないのですが、、Pythonの流儀ということで意見ください。
URLリンク(github.com)にあるコードをimportして使いたいんですが
こういう場合どうやってファイルを配置します?<br>
myProjectフォルダ<br>
-フォルダ1(上記 Ayane.gitをここにクローンする)<br>
-srcフォルダ (上記ライブラリを使ってつくる自分のコード類)<br>
-venvフォルダ(myProjectの仮想環境)<br>
のような配置にすると、myProjectをgithubにプッシュする時にフォルダ1とvenvフォルダを
myProjectリポジトリの管理対象から外しておくと思うのですが、他のプロジェクトを
借用し、かつそれを利用する自分のプロジェクトをgitリポジトリに乗せる場合の
流儀が良くわかりません。<br>
むしろmyProjectとは全く別の場所にクローンして、それをインポートすべきなんでしょうか。
いや、、、pipした場合はパッケージはvenv内に入るのだから、venv内にクローンすべきなんでしょうかね。。。

67:デフォルトの名無しさん
22/01/23 10:11:38.47 XC5l3Rpo.net
その方法でもいいし、myProjectとは別の場所にcloneするでもいい
git submoduleで参照する方法もある
venv/に入れるのは変だと思う

68:デフォルトの名無しさん
22/01/23 12:14:23.36 Wu5qqWWY.net
どれだけそのコードを信用してるかや使うかで決めるかな
環境作るたびにインストール必須だよみたいなのだったらvenvだし
よく使うけどある程度修正したのを使わないとみたいなのだったらフォルダ1だし
使うたびに自分のソースに合わせて修正しないとみたいのだったらsrcフォルダ

69:デフォルトの名無しさん
22/01/23 22:07:33.64 T1dR8XYG.net
venvに入れるならsetup.py書いてpipで入れられるようにしたい

70:デフォルトの名無しさん
22/01/23 23:37:49.30 9kMDQdv1.net
>>66-68
ありがとうございます。git submodule、これこそ求めていたものかもしれません。
趣味の将棋を扱うのに、将棋のGUIソフトを使わずに棋譜解析での各手番の評価値と
実際に指した手との差異で好手悪手判定、手番毎の候補手とその読み筋、候補手間の
評価値のばらつき、をエクセル明細にしたくてとりくんでいますが、なんとかやれそうな気がしてきました。

71:デフォルトの名無しさん
22/01/25 15:46:02.96 42lgkov0.net
ここの皆さんはどういう環境でコード書いてるの?
windows10でpython3使おうと思ってるのですけど、公式が配布しているやつか、wslで使うのがいいのか悩んじゃってます

72:デフォルトの名無しさん
22/01/25 16:23:05.52 dV84BduS.net
公式のwin版入れて問題が出たらwslにすればおk

73:デフォルトの名無しさん
22/01/25 16:28:22.81 rL/URVaj.net
win10、アナコンダでだな。ideはvs使ってる
公式とかwslで使うなんて考えたこともない

74:デフォルトの名無しさん
22/01/25 16:46:35.57 BU0vvn65.net
公式のWin版入れるのが一番トラブルすくない
あとはVSCodeあれば事足りる

75:デフォルトの名無しさん
22/01/25 18:24:04.77 MSa2pOie.net
win10, 公式3.10, venv vscode

76:デフォルトの名無しさん
22/01/25 19:09:52.59 U9NdU/dK.net
バージョン変更は簡単?

77:デフォルトの名無しさん
22/01/25 19:15:38.03 NfMS9nHt.net
PyCharm+Windows版公式

78:デフォルトの名無しさん
22/01/25 19:16:36.34 NfMS9nHt.net
ちなバージョンはまだ3.9x

79:デフォルトの名無しさん
22/01/25 19:29:43.84 /dd0PRan.net
>>75
公式はマイナーバージョン毎に既定のインストール先違うし
複数入れてpyコマンドのオプションやshebangで特定バージョンでの実行が可能

80:デフォルトの名無しさん
22/01/25 20:59:20.08 BmRih8+2.net
pythonは公式CPythonのシステムインストール
モジュールパッケージはユーザーインストール
ユーザーディレクトリはシンボリックリンクでバージョンアップ時に付け替える
バージョン分けはpyランチャーとシバンってとこだな
流石に2と3は完全に分けてるけど

81:デフォルトの名無しさん
22/01/25 21:46:27.25 FOQo9N+v.net
公式ページの3.8が機械学習ライブラリ関係でトラブル少なくていい感じ
3.10の文法気になるときは切り替えている
大層なIDE必要ないからエディタは何でもいいと思っている
VScodeが一番好き
anacondaはpyinsyallerで事故って以来使っていないな
condaコマンドとかよくわからんし...

82:デフォルトの名無しさん
22/01/25 23:25:29.53 Vpk3TLE1.net
Ruby on Rails などのウェブ系のプロは、
日本人が作った、多言語のバージョンマネージャー・anyenv を使う
rbenv(Ruby), pyenv(Python), nodenv(Node.js), tfenv(Terraform) などを統一的な操作方法で扱える
Renv, crenv, denv, erlenv, exenv
goenv, hsenv, jenv, jlenv, luaenv
nodenv, phpenv, plenv, pyenv, rbenv
sbtenv, scalaenv, swiftenv, tfenv
同様のツールに、asdf もある。
他には、Docker もある
YouTube で有名な、雑食系エンジニア・KENTA のサロンのRuby on Rails初心者用コースでは、
Linux, Raiis, Node.js, AWS Fargate, Terraform などは常識
Windows 版のMSYS2 とか、使う香具師はいない。日本語でバグるから。
必ず、仮想OS かWSL2 で、Linuxを使う。
本番サーバーが、Linuxだから

83:デフォルトの名無しさん
22/01/25 23:37:44.91 b/Jp9bRr.net
教えてください。
pandasのmergeで、nan同士を結合させることはできますか?

84:デフォルトの名無しさん
22/01/26 12:46:50.93 DYVcmqpl.net
全角文字を変数名にしていいですか?

85:デフォルトの名無しさん
22/01/26 13:18:15.24 L8/qQbgJ.net
絵文字もいいぞ
URLリンク(betterprogramming.pub)

86:デフォルトの名無しさん
22/01/26 13:33:59.48 DYVcmqpl.net
>>84
やっぱりPythonは最高だわ

87:デフォルトの名無しさん
22/01/26 14:06:52.64 6gLrsb4d.net
全角使うとソース読みやすくなっていいんだけどな。人には見せれない
個人で開発してるからって場合でも詰まって人に聞きたくなるときとかあるし

88:デフォルトの名無しさん
22/01/26 14:45:37.25 xSTWaWcL.net
絵文字変数は標準対応してなくて、しかもこのトランスパイラは古いpythonにしか対応してなくて真面目なプロジェクトなのかもよくわからんけど絵文字も悪くねーだろって記事だと思うけど、それでも最高って評価でええんか?

89:デフォルトの名無しさん
22/01/26 15:43:59.34 a5hjt3dg.net
70で環境に関して質問した者です。
皆さんありがとうございます。結構皆さんバラバラな環境なんですね。
とりあえず公式入れてみようと思います。
ありがとうございました

90:デフォルトの名無しさん
22/01/26 18:45:40.80 BRzp4Bf7.net
こんな感じで関数の中で同じ処理を二回しているんですが、これをまとめて
二回呼び出すことによって、同じ効果を出すにはどうしたらいいんでしょうか?
a = get_a()
if a > 0: return("end")
その他の処理1
a = get_a()
if a > 0: return("end")
その他の処理2
if文と関数の呼び出し元にreturnする所を含めた形で繰り返したいです。
(全く同じ文なので)

91:デフォルトの名無しさん
22/01/26 19:08:21.23 nCUrJFSS.net
for f in [その他の処理1, その他の処理2]:
_if とreturn
_f()
とかでいけるかなあ?

92:デフォルトの名無しさん
22/01/26 19:52:22.08 hY/A3e1V.net
全角文字を識別子にするのは
区別が付きにくい文字があるので
あんまり賛成できないなあ
そういう文字を使わないのならいいけど
例えばひらがなの「へ」とかたかなの「ヘ」とか

93:デフォルトの名無しさん
22/01/26 20:03:57.46 Dd3LK1vU.net
>>89
文脈ないから何がしたいかわからんけど
代入伴うガード節みたいなことなら
if a := get(): retur


94:n 処理 と各メイン処理前に書くことはある if not (data := get()): return のが読みやすいか



95:デフォルトの名無しさん
22/01/26 20:53:13.08 BRzp4Bf7.net
>>92
反応ありがとうございます。説明が悪くて申し訳ないです。
プリプロセッサのマクロみたいに、ifとreturnもまとめて関数の外に
くくり出すにはどうしたらいいんだろうという疑問です。
関数内関数とかにすると、返り値を判定しないといけないじゃないですか。
それも外に(別に関数の中でもいいですけど)出したいなと。
愚直に二回書くか、返り値を判定すれば、それで済むは済むのですが、
多分言語的に解決する方法はあって、それを知っておいた方が美しいかなと。

96:デフォルトの名無しさん
22/01/27 02:04:56.13 xQdC/mnh.net
プリプロセッサですか... というわけで import を悪用してみた。
return


97:とか飛び出すみたいのは... 例外でもいいですか? 以下インデントがどうなるかわからない(全角を使ってみた)。 元のコードより複雑になっているというのは気のせい。 var.py: ---------------------- a = -10; ---------------------- check.py: ---------------------- import var if var.a > 0:   raise Exception('check') ----------------------- main.py: ----------------------- import var import check def foo():   try:     # 処理1... の後 var.a に値をセット     reload(check)     # 処理2... の後 var.a に値をセット     reload(check)   except Exception as e:     return "end"   return "ok" ret = foo() print("ret = " + ret) -----------------------



98:デフォルトの名無しさん
22/01/27 09:13:31.95 q7HNZ+k9.net
しかしimportがただのプリプロセッサでないのがわかったw
変数のスコープがあったり二重読み込みがデフォで抑制されたり。

99:デフォルトの名無しさん
22/01/27 10:47:35.58 BLpAKzVu.net
親関数が戻る所は、
resp = await asyncio.gather(*exec_list)みたいになってるので、
普通にreturnして欲しい所存です……

100:デフォルトの名無しさん
22/01/27 11:09:39.82 kowYjA+c.net
Ruby のrequire は、ロードパスからモジュールを探して、読み込んで実行する。
ただし、同じものは2回以上実行しない
一方、load は、同じものでも再実行できる
include は継承チェーンに、mix-in されるから、
関数名を探索できるようになる
Rubyの作者・まつもとが、
require・includeの違いが分からない香具師は、プログラマーに向いていないと言った
ファイルを分割して書いて、読み込んで実行したり、継承チェーンを作ったりなど、
オブジェクト指向を作る、インタープリタの内部の仕組みに興味が無いような人は、
プログラマーに向いていない
プログラマー向きの香具師は、内部の仕組みに興味を持つ。
好奇心・探究心、学者

101:デフォルトの名無しさん
22/01/27 17:11:22.17 xQdC/mnh.net
>>96
>>94みたいのは駄目すかw returnというのは関数の呼び出しと表裏一体で、
関数を呼び出すところでその場所と状態を記憶して、処理が終わったらそこへ戻る。
関数の中でさらに関数を読んだらその新たな場所へしか戻れない。プリプロセッサは
関数じゃないのがミソ。
そうだなあ... Cのlongjumpみたいのが一応あるようだが.... まあそれも根本は例外
処理みたいなものだろうが... しかしさらに脱線していくようなw

102:デフォルトの名無しさん
22/01/27 17:17:29.41 O/Xb3RdK.net
操作を記録して、コードを自動生成する方法を教えて下さい。
例えば記録開始後に、
・すでに起動されているメモ帳の位置を変えて、そこに「あいう」と入力する。
と言った操作をしたら、それをコードにしてくれる感じです。
UWSCの動作記録機能のような物を想定しています。

103:デフォルトの名無しさん
22/01/27 17:28:41.66 aAqz06lG.net
マウスキーボードグローバルフックして記録するだけ
なんだけどwindowsのapi叩くことになるから(python向けの)情報少なくて大変かも
c#とかでやったほうが楽だと思うよ

104:デフォルトの名無しさん
22/01/27 19:18:15.13 7tIXYF4b.net
マウスの動きをトレースするのは誤差が大きいので
できればキーボードマクロを使った方が正確にできる

105:デフォルトの名無しさん
22/01/27 22:10:33.22 /l3HfrsT.net
>>99
一応こういうのあるよ
URLリンク(github.com)

106:デフォルトの名無しさん
22/01/28 20:23:11.50 NkTLAq7B.net
fee = ['+送料715円', '+送料1650円', '+送料', '+送料750円', '+送料']
上記のリストを下記のリストになるように置換したいです。
newfee = ['+送料715円', '+送料1650円', '+送料0円', '+送料750円', '+送料0円']
どのようにしたらいいですか?
re.subかre.se


107:arch(書き方わからん).group().replace('+送料','+送料0円')で いけそうかなーって思ってるんですがうまく書き方がわかりません newfee = [ここの記載がよくわからん for fee in fee] よろしくお願い申し上げます



108:デフォルトの名無しさん
22/01/28 20:31:33.73 S2S29ZR7.net
\+送料$

109:デフォルトの名無しさん
22/01/28 20:51:10.23 S2S29ZR7.net
newfee = [re.sub(r'\+送料$', '+送料0円', f) for f in fee]

110:デフォルトの名無しさん
22/01/28 20:56:55.92 NkTLAq7B.net
>>105
ありがとうございます!!

111:デフォルトの名無しさん
22/01/28 22:49:23.99 GOayFGyf.net
djangoでdb登録する方法を教えて下さい
modelインスタンスをループで沢山作って最後にbulk_create()を使って登録するのは分かりましたがmodelが7つあります
それぞれforeignkeyとそのrelated_nameで繋がっています
この場合の要領が分かりません
雰囲気的に中心となるようなmodel(仮にAと呼ぶ)を見つけてそこに例えば他のモデルのインスタンスをAのforeignkeyに渡すような感じにすればいいんですか?
もし複数渡したい時はどうすればいいですか?
そしてAがmodel Bを参照しており、BがCを参照している時にインスタンスオブジェクトAからCに登録するにはどうすればいいですか?

112:デフォルトの名無しさん
22/01/29 00:12:59.76 5xe9daD4.net
>>103
>>> ['+送料0円' if f == '+送料' else f for f in fee]
['+送料715円', '+送料1650円', '+送料0円', '+送料750円', '+送料0円']

113:デフォルトの名無しさん
22/01/29 13:40:24.15 YRcqrgZl.net
多分壊れてて、画像としては開けないjpgファイルがある(ビューワでも各種編集ソフトでもだめ)
im = pil.open(path)
.formatとか.sizeは読める
show()
imagearray = np.array(im)
はできない
エラーはpermission denied
ファイルは編集不可属性ではない
復元というか画像として読めるファイルを作成したいんだけど、なにをしてみたらいい?

114:デフォルトの名無しさん
22/01/29 13:55:47.07 s/Lqmbn4.net
どう壊れてるかによるからな
バイナリエディタで見てEOIがあるかとか、イメージデータが0000で埋まってないかをチェックして、データありそうならSOIからひとつず読み取ってみてどこが壊れてるか探す
ヘッダーが逝ってるだけならわんちゃんありえるけど、サイズ見えるのじゃイメージデータ逝ってる可能性大だろうな

115:デフォルトの名無しさん
22/01/29 16:36:36.82 YRcqrgZl.net
>>110
むむ、そのへんの単語ググりながらやってみようと思ったんだけど
もうバイナリエディタで読めないっすね
えーまじか。そんなことあるのか
ちなみにwindows的にはサムネイルの作成はできてる模様

116:デフォルトの名無しさん
22/01/29 17:23:49.29 nzagQ2IL.net
>>111
> もうバイナリエディタで読めないっすね
???
ディスクエラーになるとかか?
> ちなみにwindows的にはサムネイルの作成はできてる模様
サムネはキャッシュされてるから以前は読めたんじゃね?

117:デフォルトの名無しさん
22/01/29 17:34:30.94 1f3+2daQ.net
とにかくそのjpgが入ってるドライブの他のファイルをどこかにバックアップするのが先

118:デフォルトの名無しさん
22/01/29 17:49:41.23 YRcqrgZl.net
>>112
stirlingで読み込みエラーです
1行も表示されず
これサイズ見えてるから壊れててもデータはあると思ってたけど
もう根本的に中身飛んでる気がするなあ。zip圧縮に失敗したときみたいな
ゴミ箱に入れたら、もう動かせなくなったし
pilでバイナリ読んで変換してどうにか的な話をしたかったんだけど
関係なくなってきたので諦めます。スレ汚し失礼しました

119:デフォルトの名無しさん
22/01/29 22:08:45.86 S/AYuT16.net
Ruby on Rails では、画像アップロードのチェックに、
ImageMagick, libvips などを使う
容量チェックだけではダメ。
1px * 1,000px とか、極端なサイズもダメ
他にも、ウイルス埋め込みとか、様々な攻撃を排除しないといけない

120:デフォルトの名無しさん
22/01/29 22:43:34.15 vSaHMnG7.net
>>115
死ねゴミ

121:デフォルトの名無しさん
22/01/30 03:46:00.30 XZx8eYmT.net
PILなんかの便利ラッパーじゃなくて、libjpeg直接触らないとどうしようもないでしょ。PILはJPEGの読み込み自体はlibjpegに丸投げして終わりなんだから。

122:デフォルトの名無しさん
22/01/30 11:09:15.57 N55kLChf.net
ディレクトリエントリ以外壊れてる可能性のが高いだろ普通に

123:デフォルトの名無しさん
22/01/30 13:07:19.08 DCMe3nw9.net
おっぱい画像じゃなかったらすれ違いだぞ

124:デフォルトの名無しさん
22/01/30 23:10:06.45 Ps75IfQG.net
> お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
くそチョンw
くそチョンはウンコを食べる糞食人種w
朝鮮人はゲリ便をじゅるじゅると
うまそうに食うw
在日は強姦を繰り返す犯罪者!
皆殺しにすべし!

125:デフォルトの名無しさん
22/02/01 22:05:36.75 hOl6ciiB.net
Tkinterで複数のウィンドウを非表示状態で生成し、
後に表示状態にするということをしたいのですがうまくいきません
threadingを使ってスレッド化することでmainloopを複数走らせることができると思っていたのですが、
最初の1つ目のウィンドウで止まってしまいます
何か解決法はありませんでしょうか
URLリンク(pastebin.com)

126:デフォルトの名無しさん
22/02/01 22:51:56.51 P6zC/C5s.net
>>121
走らせてないからわからんけどshowはスレッドをインスタンス化するときにコールしたらだめな気がするぞ
返り値を渡すんじゃなくて関数自体を渡すんだ

127:デフォルトの名無しさん
22/02/01 22:54:40.84 P6zC/C5s.net
27行目
thread = threading.Thread( target=show, args=(root,) )
でどうだ

128:デフォルトの名無しさん
22/02/02 00:33:40.49 mBcvYcjV.net
URLリンク(stackoverflow.com)
これがホントならプロセス分けるしかないね

129:121
22/02/02 06:41:57.54 6CCAEreu.net
ありがとうございます
rootがいくつもあっても、mainloop()はどれか一つでも走らせればそれで良いのですね!
最後を
for root in window_list:
  root.deiconify()
window_list[0].mainloop()

 とすることで生成した分すべて表示できました

130:デフォルトの名無しさん
22/02/02 10:11:06.05 RL/7fH2d.net
一般的なGUIで、UIにさわれるのは1個のスレッドだけだね。
そこでメインループを回して、他のスレッドは処理を渡したりするだけで自らUIを操作
しないようにする。

131:デフォルトの名無しさん
22/02/02 21:39:50.40 EL6vvzM+.net
Pythonの勉強を始めて1ヶ月程度のプログラミング自体初心者です
for文でfor_in rangeというのを見かけたのですが、この場合の_って何を表すんでしょうか?
関数名とは違うのでしょうか?

132:デフォルトの名無しさん
22/02/02 21:46:34.25 dtxLg5iw.net
URLリンク(blog.pyq.jp)
アンダーバー(アンダースコア) python 変数名 意味

133:デフォルトの名無しさん
22/02/02 21:48:19.29 U+ueKPSe.net
変数だけど使わない変数を慣習的にアンダーバーを使っている
繰り返したい処理があるときはfor i in range(10)とか使うと思うけどそのforブロック内でiを使わないときはiじゃなくてfor _ in range(10)って感じ

134:デフォルトの名無しさん
22/02/02 21:52:54.86 PDm/NhWY.net
URLリンク(docs.python.org)
公式の日本語は
> Elsewhere, _ is a regular identifier.
ここの訳が変だな

135:デフォルトの名無しさん
22/02/02 22:12:17.07 EL6vvzM+.net
レスありがとうございます
関数名じゃなくて変数名でしたね、失礼しました
丁寧に説明してもらっておきながら申し訳ないのですが、使わないとか定義しないとかいまいちピンと来ませんでした…
もうちょっと自分で色々書いてみてからまた来ます

136:デフォルトの名無しさん
22/02/02 22:16:55.84 U+ueKPSe.net
使うパターン
for i in range(10):
print(i)
使わないパターン
for _ in range(10):
counter += 1
すげー適当な例だけどわかるかな?

137:デフォルトの名無しさん
22/02/02 22:29:06.02 dtxLg5iw.net
a, b, _, _, e = get_data()
5つ返ってくるけど要るのはa,b,eだけ みたいな

138:デフォルトの名無しさん
22/02/02 23:51:53.90 ig8XBRXZ.net
>>130
おかしいもなにも、_に関しては訳されてなくない?
どこのこと

139:デフォルトの名無しさん
22/02/03 13:14:00.01 euzyX/2k.net
djangoで「モデルAのオブジェクト」を作ってこのオブジェクトにforeignkey貼ってる「モデルBのオブジェクト」のforeignkeyの所の変数にAのオブジェクトを渡してから「モデルBのオブジェクト」を作ってAをsave()したとする
この後Bのオブジェクトをsave()したらちゃんとA_idが保存されるの?
ややこしいけどなんと説明すればいいのやら
因みにtransaction.atomicは必要だよな?

140:デフォルトの名無しさん
22/02/03 14:00:58.08 euzyX/2k.net
>>135
これ今試したけど出来るっぽいな
難しいわ
なんで参照渡しでもないのに出来るのかさえ分からん

141:デフォルトの名無しさん
22/02/03 15:25:43.23 lrjvvrdU.net
Aをsave()した時点でBのA_idに反映されてそうだけど

142:初心者の質問です。
22/02/05 03:42:35.77 /8OR3rgW.net
Pythonというのを使うと、他のアプリ(windows) 例えば、市販のビジネス
ソフトに連動させて入力やら出力やらを自動化できたりするのですか?
他のアプリは、MS Excel などに限定されるのですか?
それとも、電機屋で売っているような例えば、年賀状ソフトとか
ビジネス会計ソフトとか、カレンダースケジュールソフトとか
なんでも、入力を自動化したり単純化してPythonから指令して
動かすことができるのでしょうか?

143:デフォルトの名無しさん
22/02/05 04:28:39.44 6miGEtTC.net
無理です

144:デフォルトの名無しさん
22/02/05 08:06:12.28 XLfwOUFr.net
>>138
APIが用意されてないとそのレベルでの操作は無理。
Google calendarなんかはGASでweb apiを自作すればいけるが、市販のソフトはそこまで親切ではない。
マウス操作やキー操作を自動化することは可能。

145:デフォルトの名無しさん
22/02/05 08:59:49.70 6Mb184NV.net
作り込めばできるけど作業コストがかかる
それをやってくれる会社も存在するくらい
MacならまともなソフトはAppleEvent実装してるから比較的楽

146:デフォルトの名無しさん
22/02/05 09:01:16.95 /8OR3rgW.net
>>139
>>140
おはようございます。
お二方返信ありがとうございます。
残念ながら無理なんですね。
(API アプリ プログラム インターフェース)
A銀行勘定システムーAPI-B銀行勘定システム
のような感じでAPIを開発しないといけないんですね。
これってやっぱり大変でしょうね。

147:デフォルトの名無しさん
22/02/05 09:03:23.27 /8OR3rgW.net
>>141
やっぱり、金がかかって
ビジネスになってるんですね。
事情がわかりました。
(原理がわかってないのが悲しいですが・・・)
本当にありがとうございました。
皆さん良い週末をお過ごしください。

148:デフォルトの名無しさん
22/02/05 09:16:13.61 sxrVj7bO.net
>>142
中央銀行の意味知っている?
銀行間で直接取引はしない

149:デフォルトの名無しさん
22/02/05 09:20:50.77 nhwXwcp2.net
API を分かってない気がする。
API を作る = AとB銀行それぞれにアプリ連携用インターフェースを追加する
API を使う = A銀行に用意されているAPIとB銀行で用意されているAPIを使って両銀行間を接続するプログラムを作る
使う方であれば python が使える可能性はある。
複数の異銀行システムのAPIを1社で実装する仕事なんてないと思うがなー。

150:デフォルトの名無しさん
22/02/05 10:06:24.03 UC+QWPwn.net
全部できるよ。ただあなたの能力とヤル気に依存する
銀行の口座確認(送金や振り込み操作以外)ならたいていはワンタイムパスワード不要なとこ多いから
普通にpythonでブラウザ操作するだけだし(ワンタイムパスワード使うのもハード必要になるけどがんばればできる)
市販ソフトの操作はそのソフトのウインドウ叩いて情報読み取ったり、最悪画面画像の認識で読み取ればいい
入力はマウスやキーをpythonから操作するだけ
「python ブラウザ操作」「python getwindowtext」「python キー操作 送信」などぐぐれば

151:デフォルトの名無しさん
22/02/05 10:43:12.54 x0YbOETD.net
やってくれって言われたら
後ろ向いて舌出してうえ~ってリアクションしちゃうな

152:デフォルトの名無しさん
22/02/05 11:13:45.51 piACNvDy.net
URLリンク(pastebin.com)
pynputでの左クリック検知と、tkinterのlabelでの左クリック検知を両立させることは可能ですか?
pynputが左クリックイベントを全て奪ってしまい、labelが反応しません
ランチャーを作ってまして、やりたいことは、
① デスクトップを左クリックしたらウィンドウを表示する、
② ウィンドウのラベルを左クリックしたらウィンドウを閉じる、
③ ウィンドウが表示されている状態でウィンドウ以外の場所を左クリックしてもウィンドウを閉じる
という動作です
①と③をpynputで、②をtkinterのlabelでと思ったのですが、うまくいきませんでした

153:デフォルトの名無しさん
22/02/05 12:09:38.48 LVRrrJUT.net
質問している人とは別の人物ですが、
画面の変化するのを待って
画面が安定してから
操作を始めるというのは可能ですか?

154:デフォルトの名無しさん
22/02/05 12:12:06.54 XLfwOUFr.net
>>149
安定が何を指してるかはわからんけど、画像処理周りの話ならフレーム差分とってしきい値処理すればいいんじゃないか?
PILのImageGrabでスクショは読み取れる

155:デフォルトの名無しさん
22/02/05 12:16:27.17 LVRrrJUT.net
>>150
ブラウザとか読み込むときに「読み込み中」とか出たり
リダイレクトを始めたりするじゃないですか、
それらの動作が一通り終わって安定するまで
待ち合わせることは可能なんでしょうか?

156:デフォルトの名無しさん
22/02/05 12:36:57.02 UC+QWPwn.net
ブラウザは読み込み終わったってイベントが来るよ。それを待ってURLとで判定すればいい

157:デフォルトの名無しさん
22/02/05 12:48:54.51 XLfwOUFr.net
>>151
seleniumの話か。
152の言うとおりイベント待ちすればいい。

158:148
22/02/05 12:54:59.73 piACNvDy.net
URLリンク(pastebin.com)
>>148ですがpynputのon_moveでマウス移動を検知して、
ウィンドウ上にポインタあるときはon_clickで何もしないようにして動くようになりました
ただマウス動かすたびにウインドウ情報の取得と座標の比較を行うので高コストです…
他に良い実装はないでしょうか?

159:デフォルトの名無しさん
22/02/05 12:59:34.70 /8OR3rgW.net
>>144-147
みなさま
すみませんです。
何れにしましても
勉強になりました。
>「python ブラウザ操作」「python getwindowtext」
>「python キー操作 送信」
で勉強してみます。
合併金融機関で旧銀勘定システムの
統合とかがむずかしくてというような
ことを風の便りにききましたので
妙ちくりんな例示になりました。

160:デフォルトの名無しさん
22/02/05 13:17:57.22 UC+QWPwn.net
>>154
クリックするときだけ座標のウインドウ見たら?

161:148
22/02/05 13:18:56.20 piACNvDy.net
>>156
たしかにそうでした…
書き直してみます

162:148
22/02/05 13:38:51.69 piACNvDy.net
URLリンク(pastebin.com)
最終的にウィンドウハンドルを識別に使うことで複数ウィンドウにも対応できました
ありがとうございました

163:デフォルトの名無しさん
22/02/05 13:47:41.85 UC+QWPwn.net
ランチャーの上にほかのウインドウがあったら期待通り動かなさそうだな
windowfrompointかな

164:148
22/02/05 14:20:31.51 piACNvDy.net
>>159
ありがとうございます、確かに重なってる部分をクリックすると、
上に他のウインドウがあるのにランチャー上にいるという判定になっていました
教えていただいた関数を使って作り直してみます

165:148
22/02/05 15:31:23.48 piACNvDy.net
GetWindowPoint関数が返すのがラベルのウインドウハンドルで詰まりましたが、
GetParentで親ウィンドウのウィンドウハンドルを取得することでうまくいきました

166:148
22/02/06 18:24:09.07 3q8vI9na.net
皆さんWindowsの環境は何を使っていますか?
先輩がAnacondaを使っていたので自分もこれで始めたのですが、
pyファイルをダブルクリックしても起動できなくて困っています

167:デフォルトの名無しさん
22/02/06 18:46:40.90 As9Eeh+2.net
anacondaはダブルクリックして使うような用途向けじゃないから・・・
それでもやりたいならユーザーフォルダのenvの中にあるpythonを関連付けして、パスも通しておいたらいけるんじゃないのか?

168:デフォルトの名無しさん
22/02/06 19:14:00.88 4Gtoye46.net
エクスプローラ上でshift+右クリックするとコンソールを開くオプション出てくるからそこから実行するのも手だね

169:デフォルトの名無しさん
22/02/06 20:11:49.90 UpadUQRd.net
pyはIDEに関連付け変えた方が利便性高そう
コンソール不要なアプリはpywにするし

170:デフォルトの名無しさん
22/02/07 02:26:12.83 8Of01QOa.net
前は(必要に迫られない限り絶対に使いたくない)Anacondaだったけど一年半くらい前に公式のPythonに出戻った
それまではpylauncher+Anacondaだったね

171:デフォルトの名無しさん
22/02/07 04:15:45.66 /WFZHSQq.net
>>165
input()使ってコンソール表示をキープする使い方もあるのでそのままがいい

172:デフォルトの名無しさん
22/02/07 08:07:41.99 X3clQbRB.net
forループを指定の時刻になったら抜け出したいんだが何か方法ありますか?
例えば21時になったらループを抜けたいです

173:デフォルトの名無しさん
22/02/07 08:25:36.92 nOkVXb94.net
now=datetime.datetime.now().hourで現在時刻を取得してif now>21:みたいな感じでいけるのかな?

174:デフォルトの名無しさん
22/02/07 11:33:42.97 v1HyCHbN.net
>>168
whileループじゃなくてforループ?

175:デフォルトの名無しさん
22/02/07 12:11:38.49 Afq51Jp9.net
signal.alarmで割り込んでグローバルに参照できる情報を更新
forではそこを確認するだけ
あるいはEventMachineみたいなスケジューラに乗っかる

176:デフォルトの名無しさん
22/02/07 20:36:04.90 uf+aDjpD.net
文字列のリスト渡す引数があるんですが、1つだけならリストじゃなくて文字列1つだけでも渡したいんです
文字列だけで渡すとforで1文字ずつのループになってしまいます。
リストで渡したみたいに同じようにforで1回回したいんですが何か方法ありますか

177:デフォルトの名無しさん
22/02/07 20:37:56.01 WNsmATfv.net
文字列が来たらリストに入れてあげればいいのでは

178:デフォルトの名無しさん
22/02/07 20:45:24.77 WJa2Jvem.net
if isinstance(x,str): x=[x]

179:デフォルトの名無しさん
22/02/07 20:48:11.70 Afq51Jp9.net
URLリンク(docs.python.org)
でオーバーロード書けるけど好きじゃない

180:148
22/02/07 22:02:57.91 QDp/4Uhu.net
メモリの確保と解放を自分ですることって可能ですか?
tkinterのラベルに画像を表示したいのですが、
tkinter.PhotoImage()の戻り値が勝手に開放されてしまい表示されません

181:148
22/02/07 22:05:00.21 QDp/4Uhu.net
>>163
そうなのですね、やっぱり純正?Pythonがいいんでしょうか…
>>164
Win11だからか出てきませんでした

182:デフォルトの名無しさん
22/02/07 22:22:44.80 dQ2UCnOY.net
>>177
win11なら幸運だ
windows terminalがプリインストールされているのでは?
なければストアから落とすとpowershellを直接開ける。
設定次第でwslもいけるぞ

183:148
22/02/07 23:12:32.22 QDp/4Uhu.net
>>178
windows terminal、入ってました
ただ使い方がよく分からなかったので、時間のあるときに調べてみます
ありがとうございます

184:デフォルトの名無しさん
22/02/08 05:30:13.15 nYjjFW0t.net
tkinter photoimage 表示されない で検索しよう
秒で解決するから
photo = tk.photoimage(画像)
widget = tk.widget(master, image=photo)

185:デフォルトの名無しさん
22/02/08 06:33:41.40 x7KPLs8u.net
>>180
ありがとうございます
インスタンス変数周りについて理解しました
URLリンク(pastebin.com)
説明が複雑になってしまうと思い後出しになってしまったのですが、
ソースを短く手直ししてアップロードしました
今回はItemクラスにiconインスタンス変数を持たせて、ここにPhotoImageの戻り値を入れています
そしてItem.iconから、ラベルを作成しています
本当はラベル作る関数にItemクラスのリストを渡して作らせているのですが、
この書き方でも再現されました
よろしくおねがいします

186:デフォルトの名無しさん
22/02/08 07:11:21.68 x7KPLs8u.net
>>181
itemをLauncherのself.item_listに入れたら表示されるようになりました
Item.iconはインスタンス変数だったけど、itemが一時的な変数で開放されちゃってたのかな…
ただ関数を再帰呼び出ししている元のソースではこの手法でもだめでした
難しい

187:デフォルトの名無しさん
22/02/08 07:53:09.80 gLJTNggL.net
いやだからワンクッション置けっつの
まず生成しろ
p = photoimage(i)
それを使え
w(image=p)
もっと単純なテストケースで試せ
上手くいく場合と、いかない場合の境界線を探せ

188:デフォルトの名無しさん
22/02/08 12:03:45.73 Wt+Lt5co.net
>>182
グローバルなリストなりなんなりにItemクラス全部ぶち込んでいけばいいだけ

189:デフォルトの名無しさん
22/02/08 21:50:34.21 9OOJa9HQ.net
クロージャとデコレータの違いが良くわかりません
どなたか猿でも分かるように説明お願いします

190:デフォルトの名無しさん
22/02/08 22:13:40.37 8MdYtPVO.net
>>185
なぜその2つが同じ(ようなもの)だと思ったのか理由を少し書いてくれない?

191:デフォルトの名無しさん
22/02/08 23:31:00.76 nzlDnO0s.net
デコレータはクロージャで処理を追加する際の糖衣の認識
def logger(func):
__def inner(*args,**kwargs):
____print(‘start’)
____func(*args,**kwargs)
____print(‘end’)
__return inner
@logger
def add(x,y):
__print(x+y)
デコレータは↓を簡単に表記する
add=logger(add)

192:デフォルトの名無しさん
22/02/08 23:58:54.11 x7KPLs8u.net
>>184
ありがとうございます
とりあえず動くようになったのですが、多分色々な要因があって原因が特定できませんでした…
また明日以降原因を探ってみようと思います

193:デフォルトの名無しさん
22/02/09 00:58:23.86 9lBFb0U2.net
Windowsでパスのセパレータが混在する原因を調べていたら、tkinterが原因だった
filedialogとTkinterDnD2で発生するようだ
こんな感じで対応してみた
files = filedialog.askopenfilenames(filetypes=fTyp, initialdir = iDir)
files = [str(pathlib.Path(p)) for p in files]
なにかまずい点や、もっとスマートな書き方ありますか?

194:デフォルトの名無しさん
22/02/09 08:57:49.87 yefmpe+I.net
スマートな書き方以前に、再代入するな。

195:デフォルトの名無しさん
22/02/09 11:31:16.02 4FhfLNQw.net
pipでcshogiというパッケージを入れようとしたら
cshogi/_cshogi.cpp:635:10: fatal error: 'init.hpp' file not found
というエラーになったのですが、何したらよいでしょう。
依存関係で怒られたCythonやnumpyは入れました。
Python3.9.6でmacOS12.2です。
ググってみると、boost/python/init.hppというのが見つかりましたが、C++のboostライブラリをいれなさいということでしょうかね、、、

196:デフォルトの名無しさん
22/02/09 11:35:44.94 gJYxYm5I.net
それソースからインストールじゃないか?
pip install cshogi
だけでいいと思う。試しにやったらほぼ素の環境で何のエラーもなく入ったぞ

197:デフォルトの名無しさん
22/02/09 11:44:04.48 4FhfLNQw.net
>>192
配布元のインストール方法を読んでもそんな気がしたし、多分そうだと思います。
が、私もpip install cshogiとしただけなんですよね。
venv環境下だからって、それも関係ないですよねえ。
あるいはM1マシンだから?と思ったけどintelマシンでも同じ、、、今晩から連休中にかけて、これを使って色々試そうとしてるので気になって仕事にならないです。

198:デフォルトの名無しさん
22/02/09 13:09:33.88 4FhfLNQw.net
>>193
Windowsとlinuxはバイナリ配布してるようなので、なんとかビルドするしかないみたいです
わざわざ試してみて頂いてありがとうございました。

199:デフォルトの名無しさん
22/02/09 14:18:07.67 BADAjEq6.net
>>190
初期化の直後でさえ禁止するのは流石に脳死では

200:デフォルトの名無しさん
22/02/09 14:47:52.14 iY5PkkMN.net
>>189
Windows のRuby で、フォルダをDrag & Drop した
Ruby では、File.expand_path で、
Windows のパス区切り \ を、/ に変換できる
\ を表示するために、\\ となっている
p ARGV[ 0 ]
#=> "C:\\Users\\Owner\\Documents\\あ"
puts ARGV[ 0 ]
#=> C:\Users\Owner\Documents\あ
p File.expand_path( ARGV[ 0 ] )
#=> "C:/Users/Owner/Documents/あ"

201:デフォルトの名無しさん
22/02/09 16:26:09.83 4FhfLNQw.net
>>194
もう出てこなくていいと言われそうだけど進展。
Boostライブラリをインストールして以下のようにしたら進展しました。こんなテクがあるとは。
env LDFLAGS="-L /usr/local/Cellar/boost/1.76.0/lib/" CFLAGS="-I /usr/local/Cellar/boost/1.76.0/include/boost/python/" pip install cshogi
今度はこのパッケージのposition.hppがないって言われたけど、またちまちま調べます。pipの仕組みを勉強しないといかんですね。

202:デフォルトの名無しさん
22/02/09 19:10:26.80 OJhEklXT.net
ctypes難しいな
memcopyが何故か超低速で困る

203:デフォルトの名無しさん
22/02/10 02:02:13.50 EK9g6ENE.net
pipに色がついててびっくりした

204:デフォルトの名無しさん
22/02/10 09:15:03.24 puUJkgbn.net
プログレスバーがオサレになったね

205:デフォルトの名無しさん
22/02/10 09:27:43.38 Tgo9r7yk.net
richがデフォルトになったってリリースノートに書いてある

206:デフォルトの名無しさん
22/02/10 20:11:51.82 DDROH4gR.net
ゲーム画面などが非アクティブでも、動作させることをPythonでやりたいです。
動作としては、ssupi+teseのようなものですが、
その仕組みも知りたいのですが、教えてください!

207:デフォルトの名無しさん
22/02/10 20:47:07.10 Bfsj9FyQ.net
URLリンク(pypi.org)
EXEファイルからICOファイルを抽出したくてこれをインストールしたのですが、これって自分のコードでimportして使うライブラリじゃなくて単体のスクリプトですか?

208:デフォルトの名無しさん
22/02/10 21:34:58.76 Bfsj9FyQ.net
>>203
ダウンロードしたの開いたらオブジェクト記述されてて使えました

209:デフォルトの名無しさん
22/02/11 02:51:16.69 79Vi/Nfi.net
>>202
挙動からしてリモートプロセスにDLLをロードしてWin32APIかWinProcをフックしてると思う
PythonではDLLを出力できないので多分無理

210:デフォルトの名無しさん
22/02/11 03:00:35.80 79Vi/Nfi.net
SetWindowsHookExのCallWndProcフック(例外的にDLL要らない)はどうだったっけ?と思ったけど、このフックではメッセージを変更できませんって書いてあるから駄目そうだ
URLリンク(docs.microsoft.com)

211:デフォルトの名無しさん
22/02/11 18:55:58.63 Lg8I1vzk.net
PyQtってtkinterのようにラベルに画像とテキストを一緒に表示することって可能ですか?
探してもそれらしきもの見つからなくて

212:デフォルトの名無しさん
22/02/11 21:06:34.36 9UXBOAM+.net
>>207
これでやりたいこと実現できない?
URLリンク(symfoware.blog.fc)
2.com/blog-entry-2299.html

213:デフォルトの名無しさん
22/02/11 21:48:34.11 Lg8I1vzk.net
>>208
ありがとうございます
[画像]タイトル
[画像]タイトル
のようなリストを作りたくて、ページ拝見させていただきましたが少しイメージと違うかもしれません

かなり強引ですが、moveの絶対位置レイアウトで、ラベル2つをペアにする方法で実装してみました
URLリンク(pastebin.com)
pyqt、無理やりなら色々なことできそうですね

214:デフォルトの名無しさん
22/02/12 04:41:58.05 OxHugf3n.net
URLリンク(codepad.org)
クラス変数の初期化で「name 'NUM' is not defined」ってエラーが出るんだけど、何が原因なんだろうか?
Python 3.10.2 64bit なんだけど、構文間違ってないよね?

215:Hルトの名無しさん
22/02/12 05:01:01.55 OxHugf3n.net
URLリンク(codepad.org)
codepadだと問題なく動作するから環境なのかな
windows10+vscode+python3.10.2 64bit でだけ起きる固有の現象…?

216:デフォルトの名無しさん
22/02/12 07:42:00.42 qCFMK4fY.net
import sys
print(sys.version)
codepadはテンプレから外そっか

217:デフォルトの名無しさん
22/02/12 09:07:50.55 DNWolfIy.net
>>209
PyQT知らんけど、一般的なGUIアプリ開発なら、
まずは、"[画像]タイトル"のクラスを作って部品化することを考えるもんじゃないの?

218:デフォルトの名無しさん
22/02/12 09:46:01.09 5WRcTUV/.net
>>213
ありがとうございます、その方向で作ってみます
PyQtはクラス継承で色々いじれるようなので楽しみです

219:デフォルトの名無しさん
22/02/12 10:11:14.01 fCVp/cR1.net
>>211
ideoneだと同じエラーが出るな
URLリンク(ideone.com)
多分書き方的にはこうなるはず
URLリンク(ideone.com)
公式ドキュメントの所にほぼ同じサンプルで失敗する事例があるけど
そのコードと同じ
URLリンク(docs.python.org)


220:3.10/reference/executionmodel.html



221:デフォルトの名無しさん
22/02/12 12:09:54.30 OxHugf3n.net
>>215
なるほどありがとう
この書き方がダメなのはわかったけど
クラス名.クラス変数 って書いても通らないし
__init__ でセットするとインスタンス生成のたびに実行されちゃうし困ったな
クラスごとに1回しか実行されないコンストラクタってないんだろうか

222:デフォルトの名無しさん
22/02/12 12:23:50.95 DQy4vyYE.net
こうしちゃうww
class test:
global NUM
NUM=64
POW=[pow(NUM,a) for a in range(0,5)]

223:デフォルトの名無しさん
22/02/12 13:02:31.30 OxHugf3n.net
>>217
それクラス内変数じゃなくなっちゃってる…
一応できたけどこういう方法しかないのかな
インスタンスを生成するまで初期化されないのが気持ち悪いけど仕方ないか
URLリンク(ideone.com)

224:デフォルトの名無しさん
22/02/12 13:32:52.88 qcs4WmEG.net
何でインスタンス変数じゃダメなの

225:デフォルトの名無しさん
22/02/12 13:53:20.84 DQy4vyYE.net
a = test()
a.output()
b = test()
b.output()
こうしたときにインスタンス変数だとpowをaつくるときとbつくるときの二回実行しちゃう
powぐらいだったらいいけど、重い処理だったら・・・
ってことじゃないかな
class内にstatic変数おけたらいいんだけどないのかな

226:デフォルトの名無しさん
22/02/12 14:11:19.51 qCFMK4fY.net
クラス定義しているモジュールの変数にすれば間に合う気もするけど
classmethod/staticmethodにするかメタプログラミングするかしか

227:デフォルトの名無しさん
22/02/12 14:30:51.17 KYIWQrD2.net
>>218
内包表記やジェネレータ式がクラス直下ではクラス変数を参照できないというだけなので
list(map(pow, itertools.repeat(NUM)…とかfor文+appendとか…で良いんじゃない?
2なら関係無く動くけど、nonlocal文とか出来た割にこんな罠があるとは

228:デフォルトの名無しさん
22/02/12 14:56:50.33 5pn6K0Tu.net
test.POW=[pow(test.NUM,a) for a in range(0,5)]
ってのをクラス定義の下にインデントなしで書けばいいんじゃないの
なんか問題ある?

229:デフォルトの名無しさん
22/02/12 15:50:52.05 OxHugf3n.net
>>219
動的に何万と作っては捨て続けるので
いちいちインスタンスごとに持ちたくないんだ

230:デフォルトの名無しさん
22/02/12 15:52:47.87 OxHugf3n.net
>>223
継承クラスを作ったときに初期化を忘れそう

231:デフォルトの名無しさん
22/02/12 19:13:13.57 dzEAJuso.net
vscodeでflake8を使っていますが、メソッドの後ろに()を書かなくても警告してくれません
これを警告してもらう方法ってありませんか?

232:デフォルトの名無しさん
22/02/12 19:21:22.02 qCFMK4fY.net
型ヒント書いてこ

233:デフォルトの名無しさん
22/02/12 19:38:11.77 dzEAJuso.net
メソッドだけでなく関数でも、例えば
print
と書いただけで()をつけないまま改行しても警告してくれません

234:デフォルトの名無しさん
22/02/12 20:04:13.67 Sz70mZLP.net
関数オブジェクトが置いてあるのはおかしなことではない
コールバック関数に関数食わせるたびにケイコクサレタラ溜まったもんじゃない

235:デフォルトの名無しさん
22/02/12 20:06:20.66 XbUiA07Q.net
myprint = print
myprint('woooo!!!!!!')

236:デフォルトの名無しさん
22/02/12 20:06:57.27 Sz70mZLP.net
関数オブジェクト食うのは高階関数か。
とにかくコールしなくても使い道はある。

237:デフォルトの名無しさん
22/02/12 20:19:30.83 995Y4clk.net
flake8、すごいね
お前のコード汚すぎる!ってたくさん言われた
自分の環境ではprint(とかなってたら警告されます

238:デフォルトの名無しさん
22/02/12 20:28:51.81 XcSi1DQ3.net
aa = print
のように代入するのはあり得るけど
print
だけってありえるの?
pythonだと実行時のエラーすら出ない
ほかの言語だとこういうのあり得ないからIDEに警告表示出るよな

239:デフォルトの名無しさん
22/02/12 20:43:06.60 Sz70mZLP.net
文字列を直置きしてdocstringにしちゃうような言語だしなぁ
pydroidだとstatement seems to have no effectの警告が出る

240:デフォルトの名無しさん
22/02/12 21:19:26.94 Tm8PqFX/.net
202です。
>>205さん
そうですか…。出来ないのは残念ですが、教えていただきありがとうございます。

241:デフォルトの名無しさん
22/02/12 21:33:52.67 40whDPBS.net
>>226
ちゃんとファイルを保存してる?
Pylance何かと違って、保存前には動作しないよ

242:デフォルトの名無しさん
22/02/12 21:56:57.57 dzEAJuso.net
>>236
はい、保存してます
警告もでないし実行してもエラーも出ずスルーされるだけです
pythonはこういうもんなんでしょうか?

243:デフォルトの名無しさん
22/02/12 22:07:27.93 kBzBXJs5.net
RustとHaskellは、コンパイルを通った時点でバグが無いことを保証されると主張してますね。
Pythonに限らず、その他の言語は、まあそういうもんでしょう。

244:デフォルトの名無しさん
22/02/12 22:32:52.77 40whDPBS.net
>>237
代わりにpylintを使えばエラーを出せるよ
ただ、ちょっと細かすぎて例外設定で除外しないと煩わしいことになるけど

245:デフォルトの名無しさん
22/02/12 23:41:28.59 za8M83yS.net
>>233
関数オブジェクト理解してる?

246:デフォルトの名無しさん
22/02/13 00:14:22.17 ckMeWHs6.net
>>240
そういう返しが来るってことは print ってだけの使いかたもあるってことなのか

247:デフォルトの名無しさん
22/02/13 04:55:00.94 sMX7fMbN.net
上でも言われてっけどtkinterのeventとか
x.bind('<1>', print)
みたいな例はいくらでもある

248:デフォルトの名無しさん
22/02/13 07:06:20.17 18RMiGPm.net
233はなんの副作用もないステートメントの話をしてるだろ
それ副作用あるじゃん

249:デフォルトの名無しさん
22/02/13 09:46:47.61 X4ZyWjWq.net
こんな文字列を直置きしてdocstringにしちゃうような言語をやってると、引数に渡されてスタックに積まれる関数オブジェクトと特に作用のない関数オブジェクトの違いが理解できなくなるぞw

250:デフォルトの名無しさん
22/02/13 13:12:28.71 ckMeWHs6.net
>>242
それは a=print と同じ使いかたでしょ

251:デフォルトの名無しさん
22/02/13 13:27:15.78 yoBtg/nD.net
>>233
> ほかの言語だとこういうのあり得ないからIDEに警告表示出るよな
C言語でも同じだよ、文法的には問題ない
ただ意味がないから大抵の処理系で>>234が書いてるような警告は出るけどエラーではない

252:デフォルトの名無しさん
22/02/13 17:21:12.09 yB05jN77.net
関数へのながーい引数を変数に入れて渡すことってできませんか?

args = text="テキスト", img="img.png", color="#FFFFFF"
makeItem(args)
みたいな感じです

253:デフォルトの名無しさん
22/02/13 17:34:48.08 yB05jN77.net
>>247
自己解決しました
args = {"text": "テキスト", "img": "img.png", "color": "#FFFFFF"}
makeItem(**args)

254:デフォルトの名無しさん
22/02/13 17:42:58.98 PEAS4D91.net
>>248
すごい細かいけど、辞書を渡す際はkwargsを仮引数にするのが暗黙のルールだったりする

255:デフォルトの名無しさん
22/02/13 18:20:42.99 MWit14K9.net
PythonでリストH=[a[2][3], a[5][7]]
を与えた後
H[0]を呼び出すとa[2][3]が返ってきますが、このx座標、y座標である2と3を返す関数はどう作られますか?

256:デフォルトの名無しさん
22/02/13 18:30:07.26 jfCaeP/j.net
b = a[2][3]
c = a[5][7]
H = [b, c]
という評価を一行で書いてるだけなので
Hの時点だともうその情報はない

257:デフォルトの名無しさん
22/02/13 18:49:18.90 MWit14K9.net
>>251
ありがとうございます。
ではx座標とy座標を呼び出すにはどうしたら良いでしょうか?

258:デフォルトの名無しさん
22/02/13 18:55:51.07 qU7qP4LH.net
よくわからないんだけどH[0]を呼び出すとa[2][3]が返ってくるなら
tmp = H[0]
x = tmp[0]
y = tmp[1]
になるんじゃないの?

259:デフォルトの名無しさん
22/02/13 19:05:34.35 4NLUjdRo.net
Pythonのサンプルコードでは
from hoge import piyo
import hoge
のような記述をよく見ます
これは行儀が悪いように見えますが、Pythonでは問題のないことなのでしょうか

260:デフォルトの名無しさん
22/02/13 19:14:02.30 ZyRs1D7f.net
>>250
座標もセットにしてリスト化する
H=[(a[2][3],(2,3)),(a[5][7],(5,7))]

261:デフォルトの名無しさん
22/02/13 19:57:37.82 yB05jN77.net
>>249
勉強中なので細かいこと大歓迎です、ありがとう

262:デフォルトの名無しさん
22/02/13 20:51:30.91 JnTPIF3C.net
>>252
欲しいの座標でなく次元では?

263:デフォルトの名無しさん
22/02/13 20:54:22.96 JnTPIF3C.net
すみません >>257 は読み間違いなので無視してください

264:デフォルトの名無しさん
22/02/13 21:09:57.57 yB05jN77.net
メンバー変数「__name」を持つ「Human」クラスがあったとして、
これを継承した「HyperHuman」クラスは、
継承元の「__name」を参照できないんですか?
クラスの外から参照しないメンバ変数を__付きにしまくったら継承先で参照できなくなってしまった

265:デフォルトの名無しさん
22/02/13 21:18:20.00 MWit14K9.net
>>253
すみません、
うまく行きませんでした

>>255
ありがとうございました、思考によって問題を回避出来ますね。私に欠けていたのは問題に食らいつく精神力でした。

266:デフォルトの名無しさん
22/02/13 21:23:23.11 +cgrIz8j.net
>>254
俺もこれ気持ち悪いわ
誰かスッキリさせてくれんか

267:デフォルトの名無しさん
22/02/13 21:54:36.39 yB05jN77.net
>>254
import xxx only zzz
みたいにしてほしかったよね

268:デフォルトの名無しさん
22/02/13 22:11:57.52 jfCaeP/j.net
>>262
xxx.zzz以外のxxx.*参照できない状態を保持するのめんどそう
import xxx
zzz = xxx.zzz
と書けるしfrom import自体いらんなら分かる

269:デフォルトの名無しさん
22/02/13 22:23:48.09 nVrhNNmO.net
>>259
そのままの名前ではできない
継承先から別の名前で山椒できる
self._Human__name
URLリンク(ideone.com)

270:デフォルトの名無しさん
22/02/13 22:25:44.83 nVrhNNmO.net
s/山椒/参照
参照の育て方調べてたからミスった

271:デフォルトの名無しさん
22/02/13 23:42:00.06 n9deEbJE.net
>>264
できるけど
わざわざ__してるのを呼び出しちゃうのかーいって気はするなw

272:デフォルトの名無しさん
22/02/14 00:04:11.74 BHqD30LB.net
>>264,265
そのタイポの仕方がちょっと笑える
「参照の育て方」はツボったよw

273:デフォルトの名無しさん
22/02/14 01:00:25.73 a1vo03Tu.net
super関数使う方法ってなかったっけ

274:デフォルトの名無しさん
22/02/14 06:51:44.54 E8yArpIy.net
>>264
ありがとうございます
変数名自体が変わってアクセス防いでるのかあ
同じ継承先からは参照したいので、_一個にしておきます

275:デフォルトの名無しさん
22/02/14 07:03:17.01 t59hyUv0.net
if os.path.exists(p):
をpathlibで書き換える場合、
if p != "" and Path(p).exists():
で完全に同じになりますか?
空文字以外に注意しなければいけないものありますか?

276:デフォルトの名無しさん
22/02/14 09:12:46.38 EEHmhlKD.net
空文字判定要る?

277:デフォルトの名無しさん
22/02/14 09:19:17.38 t59hyUv0.net
>>271
空文字判定しないと、空文字のとき Path(p).exists()がTrueになる
空文字はpathlibで "." として扱われるみたい

278:デフォルトの名無しさん
22/02/14 10:03:53.41 SdWG8Yth.net
pが文字列なら同等とあるけど
URLリンク(github.com)
URLリンク(github.com)
テストコードの範囲内で使うのが無難

279:デフォルトの名無しさん
22/02/14 10:43:07.13 TVm+ejPZ.net
富士通「年収3500万円」の衝撃 ソニー、NECも戦々恐々の「グローバル採用競争」
「富士通年収3500万!」日本のIT企業の年収も、高額化してきました
ゼロから起業するよりも事業承継(小さな会社の買収)が圧倒的に有利である3つの理由
「エース人材だって起業OK」、NECは挑戦者が集う場をつくる
NECなど「出向起業」 大企業人材、起業しやすく
IHIが副業解禁、人事制度で他の重工大手を先行する狙い
カルビー/国内社員3900人を対象に副業解禁

280:デフォルトの名無しさん
22/02/14 11:25:14.57 QXoUwWbT.net
>>272
ひでー。そんな地雷関数使いたくないな

281:デフォルトの名無しさん
22/02/14 11:35:18.27 LyAfGJhX.net
どのシステムでも何も渡さなければ現在のディレクトリとして処理するだろ

282:デフォルトの名無しさん
22/02/14 12:03:25.17 QXoUwWbT.net
c#のsystem.io.file.exists()やdirectory.exists()、winapiのfindfirstfile()(ディレクトリの存在確認もできる)
どれも空文字は失敗するよ

283:デフォルトの名無しさん
22/02/14 12:46:17.43 yQZmxBH4.net
スクレイピングする際にlxmlでhtml内に任意のcssセレクタが含まれてればtrue、含まれていないときはfalseを返すことってできますか?

284:デフォルトの名無しさん
22/02/14 12:59:49.50 SdWG8Yth.net
>>277
パスはpathlibへの引数でexists()の引数じゃないんよ

285:デフォルトの名無しさん
22/02/14 13:05:45.54 HOsCpiZ6.net
Ruby では結論としては、空文字列と、. で同じ結果になる
require "pathname"
p path = Pathname.new( "" ) #=> #<Pathname:>
p path.to_path #=> ""
p path_ab = path.join( "a/b" ) #=> #<Pathname:a/b>
p path_ab.to_path #=> "a/b"
# --------
p path_2 = Pathname.new( "." ) #=> #<Pathname:.>
p path_2.to_path #=> "."
p path_2_ab = path_2.join( "a/b" ) #=> #<Pathname:a/b>
p path_2_ab.to_path #=> "a/b"

286:デフォルトの名無しさん
22/02/14 13:25:01.55 T1NsaTsY.net
おう落ち目の言語の話は聞いてねえぞ

287:デフォルトの名無しさん
22/02/14 13:44:26.39 cFSy1VCv.net
>>280
それ同じじゃないぞ

288:デフォルトの名無しさん
22/02/14 14:14:19.21 7Dm4+XiT.net
>>280
1嫁😡

289:デフォルトの名無しさん
22/02/14 15:21:21.44 OJkUcli+.net
>>250
私も初心者なのでアドバイスなどおこがましいのですが...
class作るのが簡単かと...
class a(object):
  value=[[0,1,2,3,4,5],[0,2,4,6,8,10],[0,3,9,12,15]]
  def __init__(self,x,y):
    self.x=x
    self.y=y
  def ans(self,x,y):
    return(a.value[x][y])
  def xy_ans(self):
    return((self.x,self.y))
H=[a[2][3], a[5][7]]
hoge=H[0].xy_ans()

290:デフォルトの名無しさん
22/02/14 15:23:55.60 OJkUcli+.net
まちがいました。
最後から2行目は
H=[a(2,3), a(5,7)]です。(5,7)でエラー出ますけど...

291:デフォルトの名無しさん
22/02/14 17:38:13.29 t59hyUv0.net
>>273
情報ありがとうございます。
テストコード長い・・・
空文字以外は気にしなくていいと思い込むことにしよう

292:デフォルトの名無しさん
22/02/16 07:19:17.06 MKfHEQkf.net
GUI(tkinter)からyt_dlpで動画ダウンロードするものを作っていたのですが
Visual Studio Codeから実行した場合正常に処理できました
直接実行するとエラーになりました(拡張子pyw)
拡張子をpyに変えると直接実行しても正常に処理できました
一般的に拡張子pywで正常に処理できるかを実行せずに判断する方法ありますか?
あるいは、拡張子pywでも正常に処理する方法ありますか?
今回のPGMはsubprocess.runを使わずに
with YoutubeDL(ydl_opts) as ydl:
____result = ydl.extract_info(youtube_url, download=True)
のような形式で呼び出しています

293:デフォルトの名無しさん
22/02/16 08:10:26.60 U1LhfB3E.net
たまに以下のようなミスをしてしまうのですが、これを防ぐor容易に発見する
にはどうしたらいいでしょうか。
foo=default_value
if a_condition:
  boo=new_value # 本当はfooを更新したかったがbooとミスタイプした
# -> あれ、fooの値が変更されてない、みたいな

294:デフォルトの名無しさん
22/02/16 08:14:04.17 jBoRoSxS.net
考えて名前つける

295:デフォルトの名無しさん
22/02/16 08:23:08.93 Hej5n2W4.net
>>288
関数化 or if-else

296:デフォルトの名無しさん
22/02/16 08:45:57.03 dhf8je8S.net
>>288
if a_condition:
  old_foo=foo
  boo=new_value
  if old_foo == foo:
    raise ValueError("error!")

297:デフォルトの名無しさん
22/02/16 09:05:32.17 W7tQrrGw.net
>>288
VS code

298:デフォルトの名無しさん
22/02/16 09:52:08.68 aoiSu09N.net
pylanceさいつよ # type: ignore

299:デフォルトの名無しさん
22/02/16 11:39:04.96 YEGQLb4J.net
pylanceってパイランスって言うんですか? 昔「だっちゅーの」っていう女の子二人組が...
素朴な疑問ですが、補完機能があるようなものを使うとして、上記の場合にbooが
間違いであることはどうやって分かるんでしょうか。もし同じスコープ内にbooという
変数が既にあった場合、booとタイプするのを間違いとは断定できないのでは...
もしbooがなかったら、「プログラムに影響を及ぼさない変数をいじってんじゃねーよ」
というツッコミは可能だと思いますが。

300:デフォルトの名無しさん
22/02/16 11:54:00.21 1mMAv7cD.net
そりゃ重箱の隅を突き始めたらすり抜けるケースなんていくらでもあるよ
もともとコードとして合法なんだもん

301:デフォルトの名無しさん
22/02/16 12:23:29.89 jBoRoSxS.net
>>291 だってold_booとか書いたら一緒だからね
もうコンパイラ言語を使えば

302:デフォルトの名無しさん
22/02/16 12:26:03.04 DXO0iyBK.net
type hints書かないの?(書き捨てのぞく)

303:デフォルトの名無しさん
22/02/16 12:29:48.85 tzGoh0bw.net
エディタが人間のやりたいことを理解できる時代になったら検出できるんじゃない?

304:デフォルトの名無しさん
22/02/16 12:30:41.98 tzGoh0bw.net
怪しい部分にはassert文挟むとか、291みたいにエラー吐かせるのが基本じゃないか

305:デフォルトの名無しさん
22/02/16 13:11:53.73 1hjdKt99.net
根本的に、1文字ミスって別の変数にアクセスできちゃう書き方というか、その命名規則や設計思想は良くないね
動けば何でもいーじゃんとか言って後々にツケが回るやつだ

306:デフォルトの名無しさん
22/02/16 14:37:06.42 m8Y8zgQ2.net
>>287
print()とかのコンソールを前提とした戻りを
拡張子pyのときに限定しないと行き場がなくてエラーが出るんじゃない?

307:デフォルトの名無しさん
22/02/16 14:51:55.36 w27+Spzi.net
エラーメッセージくらい貼ろうぜ

308:デフォルトの名無しさん
22/02/16 14:56:01.74 m8Y8zgQ2.net
no_consoleモードだと、エラーメッセージがそのままでは拾えないような

309:デフォルトの名無しさん
22/02/16 17:10:08.13 MKfHEQkf.net
>>301
別のプログラムで、pywからImageMagickt等10種以上をsubprocess.runで呼び出して、
no_consoleモード実行してるんですがエラーになったことないです。
pythonのprint()もエラーでたことないです。


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