くだすれPython(超初心者用) その49【まず1嫁】

■ このスレッドは過去ログ倉庫に格納されています
2020/07/18(土) 16:33:27.37ID:/iWSRGfH
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
「Ruby では」「Rubyでは」「某言語では」をNGワード登録推奨

このスレッドは「お勉強」スレのほうには書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を、勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますので、お礼は Python の布教と初心者の救済をお願いします。

★エラーを解決したい場合は、
  表示されてるエラー全文(勝手に省略やスクショうp等の横着クソ行為禁止)と、
  実行環境(Pythonのバージョン・OS+IDEの種類とバージョン)をシッカリ書くこと。

【【【複数の連続半角スペースはなかったことになる・タブがうまく入らない5chの仕様】】】に注意!
Pythonの★ソースコードをそのまま5ちゃんにコピペすると、インデントが崩れてチヌ★ので
  ↓等の、いわゆるコードうp用サイトに貼ってこいください。
ttps://techiedelight.com/compiler/  Run Code機能あり。最近流行中?
ttp://ideone.com/      デフォ設定はC用のため言語選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。

◇Python公式サイト◇ http://www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/wiki.cgi

〇前スレ〇
くだすれPython(超初心者用) その48【まず1嫁】
https://mevius.5ch.net/test/read.cgi/tech/1589201940/

次スレは >>985 あたりが挑戦してくだしあ。(980過ぎても自動落ちはしなくなって久しい)
### END OF TEMPLATE ###
477デフォルトの名無しさん
垢版 |
2020/08/09(日) 12:31:25.41ID:G1el0n+S
file = ["one","two","three"]
for i in len(file):
print(file[i])

テスト用に作ってみましたが、これだとnot iterableになります
iが繰り返しに使えないとはどういうことでしょうか
インデックスは繰り返せるはずですが、、、
2020/08/09(日) 12:33:47.83ID:lPdKuM8h
>>476
fileはリストだけど
iは?

エラーメッセージ読めよ
2020/08/09(日) 12:39:36.94ID:JXdOVZ/U
>>476
リストをループすると、iにはイテレーターじゃなくて、リストの中身が入る
file = glob.glob("fold/*")
print(file)
for i in file:
print(i)
実行j結果
['fold\\aaa', 'fold\\bbb']
fold\aaa
fold\bbb

だからfile[i]にすると、文字列を使ってリストにアクセスしようとするからエラーになる
2020/08/09(日) 12:46:15.61ID:JXdOVZ/U
>>477
これはPythonの記法的な問題
for i in 3みたいな書き方は出来ない
エラーメッセージでTypeError: 'int' object is not iterableって書いてある通り

file[0]、file[1]、file[2]みたいにアクセスしたい場合は>>479の書き方にするか
rangeを使う
file = ["one","two","three"]
for i in range(3):
print(file[i])

実行結果
one
two
three
2020/08/09(日) 14:55:41.57
さらにenumerateも便利、同時にインデックスとれる

files = ["one","two","three"]
for i,n in enumerate(files):
_print(i,n)

>>>実行結果
0 one
1 two
2 three
482デフォルトの名無しさん
垢版 |
2020/08/09(日) 18:18:04.95ID:G1el0n+S
↑ありがとうございました
インデックスではないんですね
range(len(file))を使いますです
2020/08/09(日) 18:55:14.84ID:TCh4WBtq
超初心者スレとはいえ、ちょっとこれは酷すぎるだろ
知的障害を疑うレベルだわ
484デフォルトの名無しさん
垢版 |
2020/08/09(日) 19:10:05.24ID:/x2pn//m
下手な教え方するより一回チュートリアルやらせたほうが、結果的には近道になるパターン
2020/08/09(日) 19:18:43.62ID:xLYoDobK
>>469
入れ子になってたりタプルで複数の値を渡してたりしたら読みづらいときもあるけど、
慣れたら別に読み辛くないよ。
読み辛いなと思ったらforの前に改行を入れてみるとわかりやすいと思う
2020/08/09(日) 19:51:17.39
.py実行したら出てくるcmdやターミナル画面ってあるけど
これをtkinterみたいなGUIウインドウの中に入れたり(そう見えてるように重ねたり)追従させたりできる?
tkinterのウインドウつまんで動かす時、一緒にターミナル画面も動いてきたらいいのにと思ったんだが
487デフォルトの名無しさん
垢版 |
2020/08/09(日) 21:36:20.00ID:G1el0n+S
pathlibをインポートするとglobはインポートしなくていいのでしょうか
モジュール同士の継承関係がわからないですが、参考ページありませんか?
488デフォルトの名無しさん
垢版 |
2020/08/09(日) 21:55:46.35ID:/x2pn//m
>>487
https://docs.python.org/ja/3/tutorial/index.html
一通りチュートリアルやってみてはどうですか
2020/08/09(日) 22:23:18.94
>>487
何をしたいかに依るのでは
from pathlib import *
#実行する.pyと同じ階層のファイルとディレクトリ一覧取得
#str()でファイルやディレクトリの絶対パスの文字列を取得できる
print( [ str(p) for p in Path().iterdir() ] )

#つまりその文字列を扱いフィルターをかけることもできる
#ファイルネーム・ディレクトリネームの文字数が20以上だけフィルタリング
print( [ str(p) for p in Path().iterdir() if len(p.name) > 20 ] )
2020/08/09(日) 23:07:31.69ID:AwKuV539
>>487
importするのに通常は依存継承関係とか余計な事は考えなくていい
ファイルが違えばスコープも違うのだから必要なモジュールならとにかくimportすればいいだけ
2020/08/10(月) 10:08:23.66ID:SIP0jVAr
>>150
わりと本気でSQL
492デフォルトの名無しさん
垢版 |
2020/08/10(月) 10:44:09.54ID:rTlZ13Bm
>>489
>>490
了解しました
2020/08/10(月) 11:19:34.28ID:mxDHCoDt
xの値に反比例して1から0まで直線的に減少していく値yが入った

value_y[x]

があって、家などの画像の上に、value_y[x]に比例したピクセル値を持つグレー画像を重ね合わせて表示させたいと思っています。
(左端はグレーで家は見えなくて、右側に行くにつれて段々とグレーが薄くなって家の画像が見えてくる感じ)

openCVとか使えば出来るかなとおもうのですが、重ね合わせようのグレー画像のうまい作り方があったら教えて下さい。
494デフォルトの名無しさん
垢版 |
2020/08/10(月) 11:58:33.01ID:rTlZ13Bm
イテレータとリストと配列の違いってなんでしょうか?
かんたんな例え、はありませんかね、、、
2020/08/10(月) 12:01:57.46ID:epTxOZiR
厳格な型制御をするC#から勉強すればそんなアホな質問は出てこない。
496デフォルトの名無しさん
垢版 |
2020/08/10(月) 12:20:38.32ID:gyMnY3Cu
>>493
なぜPythonでやる必要があるんですか
GIMPやINKSCAPEの使い方覚えた方がいいんじゃない?
>>494
イテレータは反復子現在地ポインタ
リストはインデックス番号のある配列の一種
配列は並べられた複数の箱
497デフォルトの名無しさん
垢版 |
2020/08/10(月) 12:22:09.41ID:wInlBSoO
>>486
.pyw
2020/08/10(月) 12:43:52.91ID:mxDHCoDt
>>496
pythonで数値計算したあとの出力なので出来ればそのままpythonでとおもったけど結構めんどくさそうですね・・・。
2020/08/10(月) 12:44:59.38ID:mxDHCoDt
for x in range(width):
span=(width-x)
if span>10:
span=10
fig.axvspan(x, x+span, color="red", alpha=float(lr_y[x]/10))


span=(width-x)
if span>10:
span=10

のところが冗長な気がするのですが、一行でうまく記述できないでしょうか?
2020/08/10(月) 12:59:00.61ID:eW2lnGgt
Opencvで
画素ごとに画素値舐めてってyの値に比例して画素値減衰させればいいんじゃないの?
2020/08/10(月) 14:00:18.30ID:nxGfQCUO
for x in range(width):
end = min(width, x + 10)
fig.axvspan(x, end, color="red", alpha=float(lr_y[x]/10))
2020/08/10(月) 15:04:07.26ID:JXIo//1S
BeautifulSoupでスクレイピングやったらうまくいったけど
10ページ分やろうとしてforで回したら
どうやら非同期(同時に)10ページ接続してる気がする
1ページ目終わったら(+sleep)2ページ目
ってやろうと思うけど、javascriptのjqueryでいう$.ajaxみたいなやつ教えてください
2020/08/10(月) 15:22:40.40ID:JXIo//1S
と、思って改めてやったらどうやら接続が早すぎて同時接続してるように見えたっぽい
自己解決? お騒がせしました
sleepだけでよさそうですね
2020/08/10(月) 16:44:14.74
>>493
重ね合わせはnumpyでグラデーションの画像作ってから
openCVで元画と重ね合わせって感じでできる
2020/08/10(月) 17:23:38.67ID:dcFChyFp
グラデかけるのなんてimagemagickで簡単に出来そうだが
2020/08/10(月) 18:42:57.58ID:epTxOZiR
>>502
無能がスクレイピングするとDos攻撃とみなされて裁判沙汰になるからやめとけ
2020/08/10(月) 18:44:25.26ID:sEIvZmCR
私は某サイトで無謀なスクレイピングをしてアクセスバンを食らった。
2020/08/10(月) 19:47:59.02ID:x8FHf1wG
txtlとして保存するだけだけどキャッシュ機能作った
2020/08/10(月) 20:04:01.05
>>506
ちなみにスクレイピングするときの無能有能の線引きみたいなものは?
もちろんAPIあるとことかスクレイピング禁止のとこでやるのは問題外として
2020/08/10(月) 20:06:48.77
最近?だと図書館だかでスクレイピングしてた人が開示されてたけど
あれ結局どうなったんだろう
当時はめちゃくちゃ失笑されてたけど
もちろん図書館側が
2020/08/10(月) 20:09:48.59ID:sEIvZmCR
スクレイピングの解説してる記事読むと、アクセスの間隔は1秒位は開けましょうとか言ってるけど、
どれくらいの頻度でアクセスしていいかなんてそのサイト次第だから。
自分はバン食らった後で利用規約読んで真っ青になっちまったよ。
2020/08/10(月) 20:10:56.59ID:UtK+DCkZ
ゲヘラヘラ(・∀・)
2020/08/10(月) 20:17:10.93
まぁノーログVPNでもかましとけば表沙汰になってない程度のことってのがなんとも感慨深いですな
2020/08/10(月) 20:17:51.91ID:x8FHf1wG
VP(ry
2020/08/10(月) 20:28:02.38ID:JYoLJZbs
>>510
岡崎市立中央図書館事件ですか
昨今のコロナ騒動でつくづくと思うのですが、技術的な事実と意思決定を行うものとの間隙が広すぎるのが、いろんな点で問題を複雑にしてしまっているのが最近の事例ですね
私は図書館側も責めることができません、だって図書館側の誰一人として、この件の技術的事実を当時も理解できなかったろうし、将来の時点においての理解可能性も期待できませんから
2020/08/10(月) 20:28:23.82ID:e/hT02ld
例の図書館の件、実際に業務に支障をきたすようなレベルだったんだろうか。
それなら図書館の言い分にも理があるかもしれない・・・

とか思って調べたら、「1秒に1アクセス程度に調整」だったのか・・・
2020/08/10(月) 20:32:31.04ID:JYoLJZbs
>>516
業務に支障はあったらしいですよ、プログラム側がバグっていたから‥‥
2020/08/10(月) 20:34:01.63ID:epTxOZiR
>>509
まあ「加減」ってやつを常識の範囲でコントロールするかどうかだな。アホは加減を知らん。
2020/08/10(月) 20:36:21.34ID:epTxOZiR
正確には加減を加える方法を知らんから恐ろしいコードをそのまま実行してしまう。
2020/08/10(月) 20:38:59.23ID:e/hT02ld
こっちが常識的に振る舞っているつもりでも、
相手が変な人かもしれないというリスクは常に存在するわけだ。
521デフォルトの名無しさん
垢版 |
2020/08/10(月) 20:41:52.13ID:oc0Vxq0a
一般的には程度の低いバカの集団を相手にしてると思って間違いない
わたくしに比べれば他人の半分はアホだ
そういうのが相手だ

そういうノータリンに技術的な話は全く通じない
お涙頂戴の情緒的なお話しか通じない
2020/08/10(月) 20:42:48.60ID:JYoLJZbs
>>518
真のアホなのはスクレイピング側ではなくて、三菱電機側なのでは?
2020/08/10(月) 20:43:31.92
>>502
・10ページ程度
・1ページずつ
・sleep挟む
慎重かつコントロールしようとしてるけど
それに対して「加減を知らん」ってのが今一わからんな
ようするに
>Dos攻撃とみなされて裁判沙汰
って言いたいだけでそれこそ加減を忘れて、説教したかっただけでは
2020/08/10(月) 20:49:20.79ID:HcOBHIWp
robot.textも詠んでない奴は無能だからスクレイピングすんな逮捕されるぞ
2020/08/10(月) 20:54:20.28
404 Not Found
2020/08/10(月) 20:55:49.15ID:JYoLJZbs
>>524
その robot.txt は「結果的に国立国会図書館のクローラも受け入れを拒否しており違法状態となっていた」そうですよね…
527デフォルトの名無しさん
垢版 |
2020/08/10(月) 22:10:13.00ID:rTlZ13Bm
パスの指定方法を教えて下さい
txtファイル一覧を取得したいです
pathlib.Path("*").glob("*.txt")
これだと取得出来ていないようです
フォルダ部分のアスタリスクが良くないようです
fold1
├fold1-1.txt
└fold1-2.txt
fold2
├fold2-1.txt
└fold2-2.txt
528デフォルトの名無しさん
垢版 |
2020/08/10(月) 22:28:15.66ID:rTlZ13Bm
↑解決したどす
529デフォルトの名無しさん
垢版 |
2020/08/10(月) 22:33:29.80ID:b58AXMKw
君さぁ、一連のループ処理の質問してる人と同じ人?
pathlibの公式ドキュメント読んだ上でその質問なの?
https://docs.python.org/ja/3/library/pathlib.html
2020/08/10(月) 22:51:23.37
そんなもん読むよりぐぐったり聞いたほうが早い(読むなとは言ってない)
ソースコード読みたくなったときにドキュメントを全部読むと良いと思う
全部読んだ人は読むべき場所だけをわかってる
全部読んだことの無い人は読む必要のないところを知らない
2020/08/10(月) 22:55:48.20
まぁ初心者でpathlib程度なら読むだけなら数時間もかからないだろうが
よくよく質問とかを見ればpathlibというよりもpythonの文法やら表記法で苦戦してるって感じじゃないか
2020/08/10(月) 23:13:59.08ID:PbB9rIkO
Pythonは公式ドキュメントがクソだからね
初心者には厳しいよ
逆引き的なサイトを見るほうが賢い
2020/08/11(火) 05:28:50.84ID:D2zXE6xI
ステップ関数とシグモイド関数とLeRU関数を一つのグラフにするやり方がわからないです
fig.savefig()
で保存してpreviewをしても真っ白でした
534デフォルトの名無しさん
垢版 |
2020/08/11(火) 06:09:26.87ID:x3iAuc4F
()
はすべて関数でしょうか?
2020/08/11(火) 07:10:35.90ID:Yoj/uuKw
kotee = (1 + 2) * 3
2020/08/11(火) 09:31:56.57ID:DyHWpKfR
>>535
固定?3^3=27?
Pythonはconst定数ないんだっけ?
537デフォルトの名無しさん
垢版 |
2020/08/11(火) 09:40:20.94ID:lpYV++WD
> お前は毎朝起きるたびに俺に負けたことを思い出すよ^^

あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!

クソチョンw

Pythonさえろくにできないバカチョンのくせに
できるとほざくクソチョンw

日本で強姦と窃盗を繰り返す
犯罪者在日のクソチョンw
2020/08/11(火) 09:48:14.19ID:B3vzQThI
>> 532
これなぁ
チュートリアルはいい出来だと思うが、リファレンスとしては本当にひどい
2020/08/11(火) 09:57:17.26
ファイルの書き込みがダブルブッキングになりそうなときっていい感じに勝手にpython側で処理してくれるの?
2020/08/11(火) 10:01:47.77ID:B3vzQThI
>>539
やってみたら分かるけど、後にオープンしたほうが優先される
2020/08/11(火) 10:10:39.94
>>540
そもそもテストの仕方がわからないけどこれでええんやろか
with open('hoge.txt', mode='w') as f:
f.write('a')
with open('hoge.txt', mode='w') as f:
f.write('b')
with open('hoge.txt') as f:
print(f.read())

たしかにbだけしか更新されてなかった・・
つまりは同じファイルをアッチやコッチで更新してたときに
with open閉じるまでに処理が重なって同時更新した場合は、
後が優先され前のデータは書き込みできていないってことかー・・
2020/08/11(火) 10:34:21.08
と、おもったら上書きモード"w"になってただけだった
"a"だと普通に追記になったわ
上書き書き込み、というより、追記
がやりたいことだった >>539
追記のときもwith openがほぼ同時に処理されるなんてことはあるのだろうか
543デフォルトの名無しさん
垢版 |
2020/08/11(火) 10:40:31.12ID:x3iAuc4F
モジュールとクラスでは、モジュールのほうが大きいんですよね?
2020/08/11(火) 10:45:12.20ID:B3vzQThI
>>542
バッファリングがあるからそんなに単純じゃないよ
同時に処理されるかどうかは確率的にゼロでなければ長期間運用してたら起こる可能性はあるので、その可能性があるならバッティングの処理が必要
一般的な方法としては空のファイルを作ってそのファイルが存在するかどうかで判断する
他の方法としてはsyslogやデータベースを使って、その処理は既存の仕組みで対応する
2020/08/11(火) 10:53:49.16
>>544
sleepしてって考えてたけどsleep終わったあとに同時になったら・・とか思ってたが
>空のファイルを作ってそのファイルが存在するか
(これも存在確認後に、ってのがちょっと気になるが)
>syslogやデータベース
なるほど、あまり気にせず既存のを使えるのはいいな

とりあえずは余裕をもって確実に順次実行できれば一般用途では大丈夫ってことかな
あんがと
2020/08/11(火) 10:56:58.52
ライブラリ ← パッケージが詰まってる
└パッケージ ← モジュールが詰まってる
 └モジュール ← クラスや関数が詰まってる モジュール名.py
547デフォルトの名無しさん
垢版 |
2020/08/11(火) 11:03:18.24ID:x3iAuc4F
はい
2020/08/11(火) 11:20:56.57ID:Kv91d30/
>>541
withを使えばその動作は予定通りなのでは?
普通にopenしてcloseするまえに処理の競合が起きれば、また違った動作になる
2020/08/11(火) 11:28:43.21ID:1kHdySm/
競合しないように書くの良いですね
550デフォルトの名無しさん
垢版 |
2020/08/11(火) 13:08:00.16ID:IdGWSTlI
>>515
安全靴で丸坊主で歩いてるだけで逮捕だもんな
狂ってるわ
551デフォルトの名無しさん
垢版 |
2020/08/11(火) 13:12:55.63ID:IdGWSTlI
>>544-545
セマフォの役割にはmkdir()が良いってどっかで聴いた
552デフォルトの名無しさん
垢版 |
2020/08/11(火) 13:24:11.52ID:l01whKN5
perlの時代から有る手法で、ご丁寧なことに、被らないユニークな名前を生成してくれるモジュールまで存在していた
2020/08/11(火) 13:27:04.77
>>548
そう
ただ、デバッグのやり方がわからなかった
例えば
with open('hoge.txt', mode='w') as f:
_f.write('a or b')
のa.py、b.py2つ用意して
a.pyとb.pyを同時に何万回も起動実行したりとかすればいいのかなと

>>511
なるほど
2020/08/11(火) 13:28:12.84
>>553訂正 mode='w' → mode='a'
555デフォルトの名無しさん
垢版 |
2020/08/11(火) 13:42:17.84ID:IdGWSTlI
555
2020/08/11(火) 14:43:16.85ID:jY8oIKoT
>>536
Python で定数を定義する
https://maku77.github.io/python/syntax/const.html

Python には、C/C++ の const のような、定数を定義するためのキーワードは用意されていません。
2020/08/11(火) 14:57:39.72ID:nKBbqh2w
>>536
もしかして:kotae
2020/08/11(火) 15:34:48.63ID:D2zXE6xI
https://i.imgur.com/z8LRR8K.jpg
ステップ関数をグラフにしようとしてこうやったけどならないんだけど間違ってる??
保存先の13.svgをpreviewしても真っ白になる
559デフォルトの名無しさん
垢版 |
2020/08/11(火) 16:03:56.36ID:IdGWSTlI
>>558
https://dotup.org/uploda/dotup.org2225187.png
2020/08/11(火) 16:22:25.07ID:D2zXE6xI
>>559
うおおおおお!
まじで助かりました!
2020/08/11(火) 16:29:12.57ID:cFpL7en6
>>544
横だけど参考になりました
2020/08/11(火) 16:41:25.70ID:93tMQ9Bj
>>559
ステップ関数ってy=0とy=1が同じx座標になる関数じゃないの?
ズレてない?
2020/08/11(火) 16:43:36.93ID:DJf2UAfN
これくらいのステップの方が上りやすいな
564デフォルトの名無しさん
垢版 |
2020/08/11(火) 17:36:53.27ID:IdGWSTlI
>>562
x の刻みを増やせば解決する
2020/08/11(火) 18:45:02.45ID:IUnIyxWQ
今まで一つのファイルにつらつらとコードを書き連ねてたから、分割しようとしたらま〜苦労した
ライブラリとかモジュールとかただコピペして使ってただけだから、from〜importとimportの違いもよくわかってなかった
独学で必要な情報だけつまみ食いしてると基本的なことが抜け落ちてて補完が大変だ…
566デフォルトの名無しさん
垢版 |
2020/08/11(火) 21:03:59.46ID:7OoR6BUn
フレームワーク使って簡単なウェブアプリでも作ったらいい
構成からテスト、デプロイ等々、一通り網羅できるでしょ
2020/08/11(火) 23:41:09.64ID:D+9Pqaiv
https://imgur.com/gOoCERA
https://harigami.jp/cd?hsh=1e894b6f-d705-405e-9987-613886c9e6c5
Pythonとmysql-connector-pythonについてです
MySQLで画像のようなテーブルを作成し、売上が100以上200以下の社員数を営業所ごとにカウントしたいです
sql_1は期待する結果を得られていますが
sql_2やsql_3のようにプレースホルダーを使うと何も取得できません
変数でテーブル名や数値などを動的に使いたいです
プレースホルダーを使ってsql_1を実現する方法を教えて下さい
568デフォルトの名無しさん
垢版 |
2020/08/12(水) 01:27:49.12ID:t6UQqoiG
> お前は毎朝起きるたびに俺に負けたことを思い出すよ^^

あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!

クソチョンw

Pythonさえろくにできないバカチョンのくせに
できるとほざくクソチョンw

日本で強姦と窃盗を繰り返す
犯罪者在日のクソチョンw
2020/08/12(水) 03:11:27.84ID:UVmFgkue
Ruby on Rails なら、

売上.where( 売上: 100..200 ).joins( 社員 ).group( 社員.営業所 ).count

Rails みたいなフレームワークを使わず、自分で文字列で、SQL 文を組み立てると、
SQL injection され放題になるけどw
2020/08/12(水) 08:22:16.74
【構成】
hoge_sample
├main.py
└packages
 ├__init__.py
 ├sample01.py
 └sample02.py

【main.py】
from packages import *
a = smpl01(1,2)
print(type(a))
print(a)
#print( dummy(1,2) )

【__init__.py】
from .sample01 import *
__all__ = [ "smpl01", '''"dummy"''' ]

【sample01.py】
from .sample02 import smpl02
def smpl01(a,b): return smpl02(a+b)
def dummy(a,b): return b-a

【sample02.py】
def smpl02(s): return str(s)
2020/08/12(水) 08:29:12.14
疑問点 >>570
(1)
【main.py】でpackages内モジュールのクラスや関数を使う時
smpl01という名前を知っていることが前提
せめて「sample01をインポートしましたよ」みたいなマーキングは必要か?
それとも【packages】みたいなパッケージのディレクトリ名から、把握しているのが前提か

(2)
packagesのサードパーティ製モジュールのimportは相対パスで指定している
デバッグのために【sample01.py】を直接起動させると
smple02が使えない
2020/08/12(水) 08:39:48.51
訂正 >>570
【__init__.py】
from .sample01 import *
__all__ = [ "smpl01" ] #["smpl01","dummy"]
2020/08/12(水) 08:47:45.76ID:+7u2t/Rq
まずtableがデータベースのテーブルではなくカラムになっていて紛らわしい
通報されるレベル

cursor.execute()の前にcursor(prepared=True)を実行しているか分からないが大丈夫か?

> cursor.execute(sql_2, (table, table, x_min, table, x_max))

は問題がないように見える

> cursor.execute(sql_2, (table, x_min, x_max))

は%sと引数の数があっていない

> cursor.execute(sql_3, {'table': table, 'x_min': x_min, 'x_max': x_max})

はこの文法が通用するのは比較的新しいPyMySQL(0.7.9以降?)だがバージョンは大丈夫か?

https://github.com/PyMySQL/PyMySQL/blob/73c22c78d14466a5ed8029ef67ca11198234913e/pymysql/cursors.py#L158
2020/08/12(水) 09:09:26.38ID:+7u2t/Rq
>>571
(1)は言いたいこと良くが分からない
アスタリスクが全ての元凶のように見えるが・・・
この構成の作り方だと
packages.sample01 … module
packages.sample02 … module
packages.smpl01 … function
がmain.pyからは見える

(2)は相対インポートがパッケージ内でのみ機能する記法だから
直接実行すると相対インポートがエラーになる
回避方法は
python -m packages.sample01
として実行する方法だが、上記の構成で__init__.pyが定義されているため警告はでる
2020/08/12(水) 10:01:11.25
>>574
>python -m packages.sample01
d できた
なぜか警告も出なかった

(1)は最初
from packages.sample01 import smpl01
にしてたけど他にも使いたいモジュールが出てきたら
fromなんちゃらの行が【main.py】に延々追加されていくので
それなら__init__.pyの方に纏めておいた方が見やすいのか?と思った
2020/08/12(水) 10:13:01.58ID:r3C450gU
>>573
こんな書き方できるのか。知らんかった
mysqlclientで順番に値を放り込む方法しか使ったことないや
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況