24/03/13 12:46:02.87 q50ahorY.net
>>441
インデントが空白4文字であることと入れ子を3重にしないことの因果関係が不明
関数やブリッジを介在した方がわかりにくいコードになることもあるぞ
そもそもCでも空白4文字インデントを使うことが多いが、
普通に3重ループは出てくるでしょ
例えばここ
URLリンク(github.com)
波括弧がないからlambdaでreturnを持つ複数の文を1つの式で扱えないとかだったらわかるけど、
インデントは関係ないでしょ
綺麗なコードを設計しよう、書こうとしてさまざまななテクニックを知ろうとする意識は大事だと思うけど、
実践なしに本とかに書かれてた「このテクニックはこういうときに使う」を鵜呑みにして、
テクニックを使わない方が見通しが良くなるような簡単な場合にも無理に使おうとするのは
よくないと思うけどなあ。デザインパターンの濫用みたいな感じ。
戻り値で判定はあり得ても例外はあり得ないわ。
誤用としか言いようがない。
457:デフォルトの名無しさん
24/03/13 13:02:27.40 q3MDl01V.net
for~else ってなんか直感的じゃない気がするんだけど、なんで「else」なの?
completed
breaked, aborted
finally
みたいな単語なら分かりやすいのに。
458:デフォルトの名無しさん
24/03/13 13:27:55.78 baZhL1uT.net
すげえ大昔からあるんだな
URLリンク(stackoverflow.com)
459:デフォルトの名無しさん
24/03/13 15:16:21.22 NVpOWzEq.net
>>450
妄想がはげしい
5chで5行超えたら一旦立ち止まろう
後半句点も復活しているw
460:デフォルトの名無しさん
24/03/13 15:54:43.36 m9o7WxBh.net
>>439
それ用の構文は無い
大域脱出の代替手段はいくつかあるけど基本的には早期リターンで対応する
その例だと内側の2重ループを関数化してbreak, continue, return(もしくはyield)で対処可
>>451
for-elseはBad Partsなので使わない
Effective Pythonにも使うなと書いてある
よくある”not found”みたいな処理はfor文の一部としてではなく
一つ上位でハンドリングすべき処理なので役割分担が間違ってる
461:デフォルトの名無しさん
24/03/14 03:42:52.99 /Z8fZW3i.net
>>453
どの辺が妄想なの?
すぐ5行以上とかのレスに長文乙って返してくる人どの板にもいるけど根拠が示されて若干長くなった文章読めないの?短文でマウントとるだけのレスほどくだらないものはないと思うけどね
句読点があったりなかったりすると何が問題なわけ?
447では意味ありそうなレスしてるのに一方で煽るとは不思議な人だね
462:デフォルトの名無しさん
24/03/14 19:42:58.77 4bFX29zW.net
pythonをサーバーでプロジェクトルートを認識させられない
NoModuleNamed"プロジェクトのフォルダー名"になる
herokuなんだけど
463:デフォルトの名無しさん
24/03/14 21:13:08.36 xE50NtDY.net
>>450
日本だと4つが一番多いが、外国だと8つも多く、16すらある。
464:デフォルトの名無しさん
24/03/15 13:14:40.59 6p0ry24q.net
pygameのlineを使い時計の秒針のようか円を描こうとしたんですがうまく行かない
どこが悪いの???
465:デフォルトの名無しさん
24/03/15 13:15:14.89 6p0ry24q.net
import sys
import math
import numpy as np
import time
import pygame
pygame.init()
WHITE = (255,255,255)
WIDTH, HEIGHT = 400, 300
SURFACE = pygame.display.set_mode((WIDTH, HEIGHT))
FSPCLOCK = pygame.time.Clock()
center_x = WIDTH // 2
center_y = HEIGHT // 2
def main():
while True:
for event in pygame.event.get():
if event == pygame.QUIT:
pygame.quit()
sys.exit()
466:デフォルトの名無しさん
24/03/15 13:15:36.25 6p0ry24q.net
for theta in range(0, 360, 20):
rad = math.radians(theta)
R = np.array([[math.cos(rad), -math.sin(rad)],
[math.sin(rad), math.cos(rad)]])
point = np.array([center_x, center_y])
rotated_point = np.dot(R, point)
x = rotated_point[0]
y = rotated_point[1]
pygame.draw.line(SURFACE, WHITE, (center_x, center_y), (int(x), int(y)))
time.sleep(1)
pygame.display.update()
FSPCLOCK.tick(100)
pygame.quit()
sys.exit()
if __name__ == '__main__':
main()
467:デフォルトの名無しさん
24/03/15 14:06:44.19 6p0ry24q.net
うまく行かない→画面外にlineの先端が飛び出す です
468:デフォルトの名無しさん
24/03/15 15:38:52.20 NWS7XA3x.net
>>461
これを試してみてくれ
point = np.array([0, -center_y])
x = rotated_point[0] + center_x
y = rotated_point[1] + center_y
469:デフォルトの名無しさん
24/03/15 15:59:41.53 6p0ry24q.net
>>462
ありがとう
円になりました
470:デフォルトの名無しさん
24/03/15 17:26:12.14 8JWNUOHY.net
>>456
なんで?
471:デフォルトの名無しさん
24/03/15 17:38:05.39 NWS7XA3x.net
>>463
座標回転は原点からのベクトルにしてから回転して
後で始点座標を加算する
後、縦横の長さが違う時は短い方に合わせないと飛び出す
必要なら1/2、1/4などして長さを調節する
画面サイズを元にスケーリングして長さを求めるのは画面サイズに依存しないやり方
472:デフォルトの名無しさん
24/03/15 17:46:21.03 F3qtk1ON.net
>>464
project_xっていうような名前のプロジェクト名だったけどherokuを覗いてみるとそんなフォルダーはなくて/app/って名前になってた
だから相対パスや絶対パスを消して全部プロジェクトルートからのimportにした(ここらへんよく分かってない)
あとherokuでポスグレ使うためにadd-on入れて、自動生成されたsqlalchemyに接続するためのDATABASE_URLっていう環境変数の中身であるpostgres://から始まるurlが正しくはpostgresql://でコード中で直す羽目になった
色々とherokuは使いやすくない
これならawsでも学べばよかった
473:デフォルトの名無しさん
24/03/15 17:47:08.11 F3qtk1ON.net
あとgitのdevelopブランチをpushしてたけどherokuはmasterしか見ないらしくそれもハマった
474:デフォルトの名無しさん
24/03/15 21:48:19.54 8JWNUOHY.net
>>466
>だから相対パスや絶対パスを消して全部プロジェクトルートからのimportにした(ここらへんよく分かってない)
URLリンク(devcenter.heroku.com)
URLリンク(devcenter.heroku.com)
この辺みたらpipでインストールできるようにしてたらコード書き換える必要なさそう
herokuに限らずデプロイするのにコード書き換える必要がでてきてしまったのはパッケージの構成がよくなさそう
何にしろ別環境にデプロイする以上、pipでインストールできるような構成にした方が楽だよ
475:デフォルトの名無しさん
24/03/15 23:44:29.33 gLD47Opc.net
>>451
条件式がTrueのときループして、条件式がFalseのときelseになる
forもwhileもループ目的でつかうので、条件式がFalseのときというのは自然と終了時になる
たとえば下記のようなループしないコードだとfalseとだけ表示される
while True == False:
____print("true")
else:
____print("false")
476:デフォルトの名無しさん
24/03/16 00:23:50.73 tIIuw8RV.net
いやいや
477:デフォルトの名無しさん
24/03/16 00:34:26.59 IFaiGfVE.net
キーワードを節約のために同じ単語を使ってるけど
if-elseのelseと
try-except-else-finallyのelseと
for-else/while-elseのelseと
みんな意味が違う
ループのelseは”if not break”
478:デフォルトの名無しさん
24/03/16 00:41:49.95 ENgm2ZqF.net
意味を与えたら異なってくるけど
内部処理は同一にみえん?
479:デフォルトの名無しさん
24/03/16 03:10:31.74 KKwFKDp9.net
全部gotoやろなあ
480:デフォルトの名無しさん
24/03/16 05:06:55.01 aWIocRO6.net
herokuにアップしたらドメインとフォルダーの間のスラッシュが何故か2つになって恐らくそのせいで404とcors error出る
ローカルではちゃんと動くし有り得そうなところは全部見たんだが
もうfastapi、react、herokuのどれのせいなのかわからなくて積んだ
elastic beanstalk に変えてデプロイし直すか.....
481:デフォルトの名無しさん
24/03/16 10:02:19.46 eI+Kyosu.net
なんか、ドキュメントとかログとか読まなそうな人だな
482:デフォルトの名無しさん
24/03/16 10:47:04.93 h3KSZFE8.net
>>473
ジョークにマジレスしちゃうけどgotoする条件の違いが重要
goto if false
goto if no exception
goto if no break
483:デフォルトの名無しさん
24/03/16 12:00:46.66 KKwFKDp9.net
>>476
(なので同一には見えないの意味でした. 補足ありがとう
484:デフォルトの名無しさん
24/03/16 13:00:21.70 BNVm3LV8.net
たぶん予約語を増やしたくないからelseを流用したんだろうね
この辺は言語設計のさじ加減だから仕方ない
485:デフォルトの名無しさん
24/03/16 13:18:07.52 gBCe/Ijm.net
try-exceptのelseってtryに全部書きたくない人が使うの…?
486:デフォルトの名無しさん
24/03/16 14:41:32.39 fX07kGnW.net
こんな混乱が起こる構文なので
使わない方がベター
実装されてる機能が全ていいとは限らない
487:デフォルトの名無しさん
24/03/16 15:25:29.24 S+aPEpZd.net
例外が発生するかもしれないけど上のexceptに混ぜたくない処理を書きたい場合とか?
488:デフォルトの名無しさん
24/03/16 23:03:57.53 1SZ3hjNN.net
forのelseというのは
forに対するelseではなく
forのループの条件式に対するelse
だから意味は違っても内部処理は同一となる
なのでif-elseをループさせてやるとfor-elseと同じ処理を再現できる
URLリンク(ideone.com)
489:デフォルトの名無しさん
24/03/16 23:25:35.65 HgWB99Ut.net
>>482
なるほどね
言わんとしてることは良くわかったわ
490:デフォルトの名無しさん
24/03/18 19:10:03.43 mMZjYpOD.net
ωってPyPyに似てるよね
491:デフォルトの名無しさん
24/03/18 22:57:43.88 k+0BFsOa.net
おいなりさんだろ
492:デフォルトの名無しさん
24/03/20 21:07:42.45 g3UAOGQ4.net
def one():
return 1,2
def two(a,b):
print(a,b)
two(100,100)
two(one())
最後の行で「TypeError: two() missing 1 required positional argument」エラーとなります。
twoで1と2を受け取れるようにするにはどうすれば?
493:デフォルトの名無しさん
24/03/20 21:12:04.19 GeI9OXvQ.net
two(*one())
494:デフォルトの名無しさん
24/03/20 21:27:30.26 g3UAOGQ4.net
>>487
サンクス
できました
495:デフォルトの名無しさん
24/03/25 21:04:47.80 ybmcJkp8.net
def myfunc():
__myfunc.initialized = True
こういうのってあり?
1年くらいpython勉強してきて、先日初めて見かけたんだけど
ちょっとおどろいてしまって
496:デフォルトの名無しさん
24/03/25 22:22:30.06 JhT+JdiB.net
functionもオブジェクトで__call__が生えてるだけと思えるならあり
ただどんな用法でも見通しが悪ければなし
497:デフォルトの名無しさん
24/03/26 01:38:33.45 CAcXk4Yx.net
おどろいてしまうようなやり方はじっくりコードを見ないとわからない振る舞いをするから基本なし
498:デフォルトの名無しさん
24/03/26 02:04:23.26 s3c2P37L.net
便利ではあるけどわりと悪用寄りじゃねーかなあ
499:デフォルトの名無しさん
24/03/26 04:38:00.60 vQ76deH4.net
"initialized" て何?
500:デフォルトの名無しさん
24/03/26 09:15:41.63 we9m9tD+.net
>>489
なにそれ
>>> def myfunc():
... __myfunc.initialized = True
...
>>> myfunc()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in myfunc
NameError: name '__myfunc' is not defined
>>>
501:デフォルトの名無しさん
24/03/26 09:32:42.21 VDce1kQ4.net
アンスコはインデントのことやろ
502:デフォルトの名無しさん
24/03/26 10:24:26.34 1hPeYZqd.net
www
503:デフォルトの名無しさん
24/03/26 10:40:59.11 oEfu3HhX.net
草
504:デフォルトの名無しさん
24/03/26 10:56:16.21 SqtaP4pc.net
便利なことある?
100%無しだと思うが
505:デフォルトの名無しさん
24/03/26 11:22:52.88 cN9vnyja.net
気持ちはわかるが………
URLリンク(i.imgur.com)
506:デフォルトの名無しさん
24/03/26 11:30:55.84 XEFglfYx.net
クラス定義より軽量、外の名前空間を汚さない
ジェネレータもあるしこれでしか書けないってのは思いつかない
507:デフォルトの名無しさん
24/03/26 12:34:45.39 rLv5Wa1V.net
template metaprogramming に匹敵する犯罪
508:デフォルトの名無しさん
24/03/26 12:38:21.94 HGM8+XQV.net
>>499
それはクロージャかクラスを使うべきケース
状態を外から更新したいならクラスを
更新されたくないならクロージャを使う
副作用じゃなく値を返すのがメインならジェネレータも選択肢の一つ
509:デフォルトの名無しさん
24/03/26 13:03:56.77 /DMrazJH.net
これGUI書きのクセっていうか、イベント・バインドの高階関数とかで見るな
簡単なGUI書いてて、クラス化まではしてないときかつ状態が2値のみのとき
ウィジェットまわりに全部押し込んだほうが目線動かなくてメンテしやすいんよ
それより表現が複雑だったら変数はrootに置いたり、クラスに持たせたりするんだけど、これはウィジェット(たとえばボタン)に持たせてるような感じ
initializedとか、btn.locked / del lockedとかだしょ
510:デフォルトの名無しさん
24/03/26 15:17:24.89 /6tigVoe.net
pylanceって何?
511:デフォルトの名無しさん
24/03/30 09:21:28.53 FABGEyhJ.net
うちの pipが、
$ pip --version
pip 55.0 from /usr/lib/python3.99/site-packages/pip (python 3.99)
だとして、python3.1/site-packagesを pip listしたい。どうしたら?
512:デフォルトの名無しさん
24/03/30 11:49:14.06 lTb8Ggax.net
python3.1 -m pipでやってみたら
要は使いたいpythonからモジュールでpipを起動する
513:505
24/03/31 06:27:21.58 r7c9jkcO.net
>>506
python3.1 はもう無い。
514:デフォルトの名無しさん
24/03/31 12:09:50.75 sPPO74qw.net
$ pip list ―path python3.1/site-packages
515:505
24/03/31 17:11:49.91 wZMZSRnS.net
>>508
なるほど。どうもありがとう。
$ pip --version
pip 55.0 from /usr/lib/python3.99/site-packages/pip (python 3.99)
$ pip list --path /usr/lib*/python3.1/site-packages
Package Version
------- -------
略
516:デフォルトの名無しさん
24/03/31 20:01:34.78 k+SRq7RN.net
モダンなGUI作れるっていうからflet触ってるんだけど
もしかしてこれGUIに対するドロップ受け付け機能ない感じ?
517:デフォルトの名無しさん
24/04/02 21:32:23.08 tcE9WrX3.net
身体がflutterを受け付けない
pythonでflutterアプリが作れるとか
なんで、なんでそんなことを
518:デフォルトの名無しさん
24/04/03 09:07:29.94 gYUDipyH.net
fletはflutterで根本的にwebアプリ用だから外部からの入力はdropzoneないと無理じゃないか
519:デフォルトの名無しさん
24/04/09 09:59:41.23 vz2W6XdT.net
>>511
自分はDartを覚えず使わずflutterアプリ作れるってのが良いんじゃね
知らんけどw
520:デフォルトの名無しさん
24/04/25 18:36:04.67 et3aNg4p.net
>>510
それないのネックだよなー
521:デフォルトの名無しさん
24/04/26 04:15:50.28 irc/xjdb.net
このスレにあった質問かどうか自信がないんだけど・・・
投資系のライブラリ"talib"てあるじゃないですか
これに含まれるCCIの使い方がわからんのです
522:デフォルトの名無しさん
24/04/26 06:53:25.16 ZBCRkORu.net
>>515
ChatGPTに聞いてみなよ
もうプログラミングは人に聞いたりドキュメントを読む時代じゃない
523:デフォルトの名無しさん
24/04/26 07:20:49.79 oC+HoZzz.net
やってみたらわかるけどマイナーなライブラリの使い方聞いてもデタラメ答えるだけ
524:デフォルトの名無しさん
24/04/26 08:47:57.09 irc/xjdb.net
>>516
無料版3.5で聞いてみた
突然英語で喋りだして、思ってたのと違うコードを紹介してきたので諦めたw
525:デフォルトの名無しさん
24/04/26 08:50:24.75 GzSmFxiN.net
ChatGPTの野郎は知ったか振りばかりして「知らない」と言うことを知らないからな
526:デフォルトの名無しさん
24/04/26 08:59:13.25 svyb6xY8.net
>>516 みたいにプログラミングやってるくせにChatGPTの実力や使いどころを知らないのまじ無能
527:デフォルトの名無しさん
24/04/26 18:16:07.03 AmdOltG1.net
いけず石の説明させたら架空の鉱物の説明しだすからな
528:デフォルトの名無しさん
24/04/26 20:01:21.45 sEQNDfGh.net
>>518
3.5で聞いたみたら下記の回答が返って来たぞ
これじゃダメなのかい?
import talib
# サンプルデータの作成(適宜自分のデータに置き換えてください)
high_prices = [105, 110, 115, 120, 118, 112, 115, 118, 122, 125]
low_prices = [95, 98, 102, 108, 100, 102, 105, 108, 110, 112]
close_prices = [100, 105, 110, 115, 112, 108, 110, 115, 118, 120]
# CCIの計算
cci = talib.CCI(high_prices, low_prices, close_prices, timeperiod=14)
# 出力の表示
print("CCI:", cci)
talib.CCI()`関数には、高値、安値、終値の配列を渡し、`timeperiod`パラメーターを指定する必要があります。これはCCIの期間を表します。計算されたCCIの値は、指定された期間ごとに配列として返されます。
上記の例では、10日間の高値、安値、終値のデータからCCIを計算しています。実際の取引データを使用する際には、それに応じてデータを入力してください。
529:デフォルトの名無しさん
24/04/26 20:15:58.39 SscvQYbj.net
ドキュメント読めよ
530:デフォルトの名無しさん
24/04/28 21:51:15.65 zlR73q8o.net
スレ立てあらしスクリプト対抗age
531:デフォルトの名無しさん
24/04/29 05:58:27.57 sMTBjD6w.net
ちゃす
質問す
プログラミングのロジックを考える時に使える考え方ありますかね
入力と出力を考えるといいますが、関数の引数が入力、返り値が出力といいますか?
532:デフォルトの名無しさん
24/04/29 07:27:54.81 xgq67JZI.net
考えることはうんこを食って食べ物を尻から出すようなことだが
重要なのはコンピューターにとってばうんこも食べ物も変わらないという事だな
533:デフォルトの名無しさん
24/04/29 07:55:32.14 Irrt06Ch.net
そうやね
いかに物事を抽象化してシンプルにモデル化するか
534:デフォルトの名無しさん
24/04/29 07:57:38.43 sMTBjD6w.net
複雑に考えすぎなんすかね
関数増えてくとわけが分からなくなります
535:デフォルトの名無しさん
536:>2024/04/29(月) 12:40:37.42 ID:sMTBjD6w.net
537:デフォルトの名無しさん
24/04/29 12:43:56.77 1Ba7WF72.net
何でもそうだけど真似というか模倣から始めるのはどうよ
ギターでもHIDEがカッコいいとか布袋みたいにとか真似するでしょ
デザインパターン本だとか有名なオープンソースのコード見てると何となく癖というか法則みたいなのが分かってくる
538:デフォルトの名無しさん
24/04/29 15:01:05.04 36J4bmfl.net
アルフィーの高見沢さんの髪がまだ短めで黒かった頃、メイキングのムービーで作曲する姿が写っていたが、
少し書いては弾いて違うと書き直すのを繰り返す姿を見て、これってオブジェクト指向に通じるんじゃないかと思った。
539:デフォルトの名無しさん
24/04/29 15:24:26.44 3QF86HD9.net
途中までスクリプトかと思った
短いときなんてあったのかぁ
540:デフォルトの名無しさん
24/04/29 15:43:29.23 yZBAGAQ6.net
>>525
一度に一つのことしかしないように考えるかな
あと一般的なことは考えず今必要なことだけをやる仕様にする
541:デフォルトの名無しさん
24/04/29 16:30:19.78 7kmh2Muz.net
>>525
>関数の引数が入力、返り値が出力といいますか?
話の文脈によるんだけど「関数の入出力」が引数と返り値だけを指してる場合もあれば
それ以外の外部状態からの入力や出力なんかを含む場合もある
プログラム設計時に関数の入出力を考える場合は
引数や返り値以外も考えないといけないので広い意味も頭に入れておいたほうがいい
>>529
>材料→材料の処理→結果、というのがプログラムの基本なんすかね
上に書いた広い意味で言うなら
指示と材料が入力で結果(成否等)と加工した材料が出力
これが基本
指示―> 処理 ―>処理結果
材料―> ―>加工した材料
542:デフォルトの名無しさん
24/04/30 05:58:23.71 7kO3MDXp.net
ありがとう(*´ω`*)、、
543:デフォルトの名無しさん
24/04/30 11:47:25.31 7kO3MDXp.net
比較について質問なのですが、数値ペア同士の比較というのはプログラミングでは出来ないのでしょうか?
例えばvector2なら、xとyの値を取り出してそれぞれ比較しますね
544:デフォルトの名無しさん
24/04/30 11:58:01.28 7kO3MDXp.net
プログラミング得意な人は頭の中がどんなイメージになっているのだろう
すべて図解になっているんだろうか
545:デフォルトの名無しさん
24/04/30 12:17:12.46 e06sRc0C.net
>>536
普通にできるでしょ
(0, 1) > (0, 2) => False
(1, 1) > (0, 2) => True
Tupleの場合は内部的にそれぞれの要素を取り出して比較されてるけどね
546:デフォルトの名無しさん
24/04/30 17:47:36.57 bXsIEdjD.net
>>537
境界知能みたいな知能が低い人には無理だよ
547:デフォルトの名無しさん
24/04/30 18:05:05.21 l8IWanaC.net
>>537
単に経験豊富なだけだよ
色々やればイメージができるようになる
548:デフォルトの名無しさん
24/04/30 18:08:16.92 7kO3MDXp.net
>>538
>>540
どうもっす
549:デフォルトの名無しさん
24/04/30 19:36:23.61 yMZhKZIP.net
経験を活かせるかどうかが能力なので
539にもアンカつけてあげて
まじで向いてない人いるから
550:デフォルトの名無しさん
24/05/01 00:28:40.04 +iRkaWFb.net
>>537
プログラムの構造を考えるのは文章の構成を考えるのと同じ頭の使い方をする
文章の構成を考えるときに図でイメージしてる人もいればそうでない人もいるように
プログラミングに習熟した人でもプログラムを図でイメージしてるとは限らないしできるとも限らない
551:デフォルトの名無しさん
24/05/01 01:16:14.81 Zve8z/ER.net
小学生でもバブルソートは書けるので、知能にデコボコがあっても、どの方向が劣っているのかによるのでは。
552:デフォルトの名無しさん
24/05/01 10:19:05.69 HGDms0B9.net
小学生でもプログラミング得意なやつはいるけどバブルソートを書くというのはお手本を模写できたり辞書を引いて目的の項目を調べられたりする程度の話だからプログラミングが出来るかどうかの指標にはならないよ
553:デフォルトの名無しさん
24/05/01 13:34:16.61 OSMPRnYB.net
実際のプログラムだとソートする関数は用意されてるから自ら実装する事は無い
ソートはあくまでもアルゴリズムを学ぶ上での教材的な感じ
554:デフォルトの名無しさん
24/05/01 14:26:55.02 G90j3Kau.net
??アスペにもわかるように書いてほしい
555:デフォルトの名無しさん
24/05/03 00:19:22.63 In48C7dA.net
ゲーム制作板で何年も倉庫番完成させられてない人じゃん
親切な人がいっぱい釣れたね
556:デフォルトの名無しさん
24/05/03 01:30:55.10 ZXRxoWBs.net
C#スレにもいたあの馬鹿か?
557:デフォルトの名無しさん
24/05/04 12:25:55.56 +MvlSNsp.net
あれ人じゃなくてチャットbotだからスルー推奨だよ。
558:デフォルトの名無しさん
24/05/12 12:51:00.18 Z6PeNQRU.net
そういや、ぷよぷよかなにかのヤツどこ行った?
同一人物?
559:デフォルトの名無しさん
24/05/15 16:15:32.43 Ui7vW0sT.net
pythonを使って、既存のMicrosoft officeのファイル(.docファイルとか)の中身を調べたり取り出したりする事ってできますか?
560:デフォルトの名無しさん
24/05/15 16:58:28.85 OtQbYBA6.net
ああその通りだ
561:552
24/05/15 17:55:42.92 Ui7vW0sT.net
出来るみたいです
562:
24/05/15 21:59:57.58 QNLWEWL4.net
>>551
脳みそコネコネ、コンパイル。
563:デフォルトの名無しさん
24/05/16 20:50:07.99 +TVk7IrH.net
Pythonで処理した画像を連続してwebUIに送って動画にしたいんですけど、ローカルサーバーをスレッドで分けても全然動かないんです。
上手いやり方はあるんでしょうか?
564:デフォルトの名無しさん
24/05/16 22:01:41.29 s6fDlAb8.net
まあPythonじゃ無理じゃないかと
君の知る似たようなサービスでPython使ってるの見たことあるかね
565:デフォルトの名無しさん
24/05/17 09:13:18.34 n7lyb5r2.net
>>557
そうなの? 単にファイルを httpdにアップロードするのとちゃうの?
566:デフォルトの名無しさん
24/05/18 02:42:21.17 Y3svyv5q.net
Image Magick, libvips などで、
連続画像を動画や、gif アニメに変換できないの?
567:デフォルトの名無しさん
24/05/18 05:29:10.65 +oV5woho.net
静的にファイル変換じゃなく
リアルタイム配信したいんとちゃう
568:デフォルトの名無しさん
24/05/18 15:28:18.14 Nno4tBsF.net
Pythonじゃ無理ってことはないけど、Javascriptで画像を動画のように表示する方法がわからないとPython側をどう実装したらいいかもわからないのでは
569:デフォルトの名無しさん
24/05/18 15:48:07.52 cxC1UrsB.net
webUIってお絵かきAIのUIの事を言ってる気がする
570:デフォルトの名無しさん
24/05/19 17:51:21.58 MUvRAHvn.net
JavaScriptが嫌でPythonに逃げたのに
Webやるなら結局JavaScriptから逃れられない
571:デフォルトの名無しさん
24/05/19 18:18:51.96 b9wC29CZ.net
>>563
Webやらなきゃいいじゃん
覚えることが大杉て向かない人にはとことん向かない
572:デフォルトの名無しさん
24/05/19 18:29:56.96 R0BEkzb0.net
>>563
こういう馬鹿な人っているよね
結局、何がどうなっているのかわからん人なのだろう
573:デフォルトの名無しさん
24/05/19 18:52:17.68 EZ0vB2tL.net
>>563
たまたまホットな言語になっているのでpython腐るのはとうぶん先
気合でJavaScriptしてこい
574:デフォルトの名無しさん
24/05/19 19:18:30.80 1dVUvEdV.net
javascriptの何が難しいのかわからん
575:
24/05/19 20:04:35.82 j/RUVR5T.net
>>558
順番を制御する必要がある。
576:
24/05/19 20:07:09.84 j/RUVR5T.net
Pythonは構文解析エンジンの作りが下手だったせいで、コンテナなどは変な構文で対処するはめになった。
作った本人は当時のパソコンの性能では難しかったと言い訳するだろうが。
577:デフォルトの名無しさん
24/05/19 21:12:03.22 b9wC29CZ.net
>>567
Pythonは簡単に覚えられたけどJavaScriptはダメだった
何の特徴もないので頭に入らない
578:デフォルトの名無しさん
24/05/19 21:25:11.71 ThBHY2c/.net
JavaScriptはブラウザ内で多数のイベントが非同期に発生しつつ並行して動く必要があるための仕様とランタイムを備えた言語だからね
そのような実用環境ではPythonだと色々と無理があるんよ
JavaScriptを習得したほうが良いでしょう
579:デフォルトの名無しさん
24/05/19 21:43:45.99 n4puDrtS.net
生のJSじゃなくてもtypescriptとかもあるけど?
580:デフォルトの名無しさん
24/05/19 21:51:27.11 1dVUvEdV.net
>>570
特徴がないとは?
Webフロントで100%使われてるんだが
つまり理解できていないだけだろ
581:デフォルトの名無しさん
24/05/19 22:58:44.91 dpzcJCd+.net
>>571
> 非同期に発生
あれ、非同期だっけ?
582:デフォルトの名無しさん
24/05/19 23:22:52.01 FYT65XYX.net
Webのイベントの非同期ってのは言語仕様とほとんど関係ないと思うがな
583:デフォルトの名無しさん
24/05/20 00:04:59.52 XCNT6iUc.net
非同期・並行に動くのがJavaScriptの特徴だよ
584:デフォルトの名無しさん
24/05/20 00:07:58.83 XCNT6iUc.net
JSは継続渡しによって記述コードは継続できるけど
制御は一旦ランタイムに移って別のコードの処理が並行して動く
585:デフォルトの名無しさん
24/05/20 00:08:40.12 XCNT6iUc.net
そして再び非同期に元の継続コードに制御が戻ってくるんだよ
586:デフォルトの名無しさん
24/05/20 04:36:21.10 IVctLQWM.net
JSの難しさというかゴチャゴチャは複数人で開発すると顕著化する
587:デフォルトの名無しさん
24/05/20 04:37:36.57 IVctLQWM.net
>>576
違うぞ
勘違いしてる様だけど並行では無い
588:デフォルトの名無しさん
24/05/20 04:57:24.87 XCNT6iUc.net
>>580
(workerを使わない昔からの)JavaScriptはシングルスレッドで並行(concurrent)に動作します
ちなみに(後に導入された)workerを用いるとマルチスレッドで並列(parallel)にも動作します
589:デフォルトの名無しさん
24/05/20 07:48:45.56 lmso/U+6.net
async/await が導入されてからは並行処理と言えるかもしれんが python にも導入されてるから
JS の特徴というほどのものでもないな。
590:デフォルトの名無しさん
24/05/20 08:56:05.71 oBw42F9L.net
PythonはOSがプラットフォームだけど
JSはブラウザとnodejsでだいぶ違うし
varとconst/let混ざったコードなんかに遭遇すると頭おかしくなる
591:デフォルトの名無しさん
24/05/20 09:16:38.85 Rnmyv+xl.net
メインスレッドを止めても、worker側でイベント受け取れる?
592:デフォルトの名無しさん
24/05/26 00:09:03.41 J6Dn8duN.net
誘導されてきました
digits1="0123456789"
print(digits1[2:4])
これで文字列"23"が返ってくるんだが"234"にならない理由ががわからん
インデックスが0から始まってるからインデックス2番目からインデックス4番目までの文字を表示するんじゃないの?
593:デフォルトの名無しさん
24/05/26 00:45:27.61 EuHdBjWc.net
>>585
URLリンク(docs.python.org)
ここに載ってる
理解できなくてもいいからまずチュートリアルは一通り読んでほしい
594:デフォルトの名無しさん
24/05/26 00:48:13.48 jZlLPC0/.net
>>585
2<=i<4だと考えるといいよ
そうした方がいい理屈は以下の通り
リストlをiで分けるとき、以下が成り立っていると見た目でスッキリして嬉しい
l[:i] + l[i:] == l
まあ思想の問題なんで上記のものがスッキリと感じるか感じないかは人による
595:デフォルトの名無しさん
24/05/26 00:48:19.96 EuHdBjWc.net
すまん
アンカーまちがえてるけど同じページのすこし手前に書いてる
596:デフォルトの名無しさん
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
てことは君のコードが書き方が原因なのは確定なので
まずは再現性のある最小限のコードを提示してね
それ以外の話はそれから