Pythonのお勉強 Part69

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ c733-stRS)
垢版 |
2022/11/24(木) 21:39:44.67ID:A6xfpKBe0
!extend:default:vvvvv:1000:1024
↑スレ立てる毎に減るので、減ってたら3つに補充すること。

・当スレにRubyのソースコード類を書くことを禁ず
・Ruby等、Pythonではないプログラミング言語での回答類・質問を書くのも禁止
・「Ruby では」「Rubyでは」「Rails」正規表現→「^クソチョンw$」をNGワード登録推奨
・エラーを解決したいときは、かならず
 エラー文(勝手に省略orスクショうp等の横着禁止)と
 おま環(Pythonのバージョン番号+OS名とバージョン+IDE名)を書け。

★Pythonのソースコードを5ちゃんに直貼はインデントが崩壊するので、
  ↓等のコードうp用サイトに貼ってきてくだしあ。(スクリーンショットをうpる「横着」禁止)
ttps://techiedelight.com/compiler/  Run Code機能あり。
ttp://ideone.com/      デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。

◇Pythonオフィシャルサイト http://www.python.org/
◇Pythonドキュメント https://docs.python.org/ja/3/
◇まとめwiki ttp://python.rdy.jp/

●関連スレ● 自称初心者は↓へ
【まず1嫁】くだすれPython(超初心者用) その58
https://mevius.5ch.net/test/read.cgi/tech/1662514433/

〇前スレ〇
Pythonのお勉強 Part68
https://mevius.5ch.net/test/read.cgi/tech/1663235546/

次スレの建立は>>985が挑戦する。(980通過して24h後も落ちなくなった)
### END of TEMPLATE ### ?
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
2023/01/05(木) 00:05:55.35ID:/79BsoYR0
>>424
左辺の型が決まらないことには呼びようがないんじゃね?
2023/01/05(木) 07:49:37.10ID:DuFbe6wEd
Perl好きならPerl使ってろよ
2023/01/05(木) 08:03:01.51ID:0egeTroNM
いい加減perlおぢさんウザイな
荒らしてるという自覚は無いんだろうな
2023/01/05(木) 08:37:29.48ID:MKhVdLEmr
頭がPerl
2023/01/05(木) 08:54:26.68ID:qYGcpxae0
おっぱいがPython
2023/01/05(木) 08:54:31.46ID:XvyJyDBe0
暗黙より明示のルールに反してるから可能だとしてもやらないだろう

変数を参照するだけか書き換えもするかで名前空間が変わるのは結構暗黙的だと思うけど、
それは利便性が優先した
初期化を省略するのはそんなに利便性が無い
2023/01/05(木) 08:57:08.87ID:O+NRT3S+0
利便性が無いというかタイプミスを検出できなくなるから
2023/01/05(木) 13:08:24.65ID:A7vAZ1Ex0
ミスはしませんw
2023/01/05(木) 13:28:28.85ID:XvyJyDBe0
タイプミスしたら使ってない変数が現れるんだから、それは簡単に検出できる
2023/01/05(木) 14:43:39.73ID:O+NRT3S+0
>>434
どうやってやるの?
2023/01/05(木) 14:53:37.34ID:XvyJyDBe0
チェッカーにかける
2023/01/05(木) 16:58:05.12ID:Ej4/aJA/0
str型限定だけど、型を自動的に変更してくれるというのはちょっとありがたいかも
format()やf文字列だと、変数をそのまま突っ込めばいいので楽ちん
2023/01/05(木) 17:05:39.43ID:DbVL8BP10
自動変換は悪さにしか使われないという印象だからいらないかな
perlみたいに言語がよしなにやってくれるならそれで良いけど
ユーザー定義の暗黙の型変換は間違いなく地獄
2023/01/05(木) 17:13:54.28ID:/79BsoYR0
C++の変換コンストラクタとかな。
自分でそれを意図して書く人にとってはそのときは楽だろうけど、後から読む人が大変。
2023/01/05(木) 17:27:10.71ID:s7+Erfl9p
JSにおけるTSみたいなのってPythonでは作られないのかな
2023/01/05(木) 17:31:18.16ID:AfQblY9wd
Pythonには型アノテーションがあるから不要
TypeScriptの超柔軟な型付けを想像してるとガッカリするが
2023/01/05(木) 17:54:22.11ID:AqbKvwuBd
>>434
その使ってない変数が初期化されてて使えるといいって話が>>406でしょ
初期化忘れよりタイプミスの方が遙かに多いだろw
2023/01/05(木) 18:02:36.57ID:XvyJyDBe0
変数名や関数名をタイプするのなんか最初の1回だけだしな
2023/01/05(木) 18:15:14.05ID:AqbKvwuBd
タイプしないならどうするの?
まさかマウスポインタ操作するの?
2023/01/05(木) 18:41:22.77ID:XvyJyDBe0
マジで、変数名はコピペしかしない習慣にした方がいいよ
あるいは自動入力
アニメに出てくるハッカーじゃないんだから、キーボード叩きまくるスタイルは良くない
446デフォルトの名無しさん (ワッチョイ 8b01-IAH/)
垢版 |
2023/01/05(木) 18:44:43.59ID:WQABuOJr0
Pythonが「メインの利用言語」で2位にとどまる、1位に立ったのは定番のあの言語
https://xtech.nikkei.com/atcl/nxt/column/18/02246/110200002/?twclid=2-6h1yvcwwfn6rhkvsu5alyi08m&n_cid=nbpnxt_twad_2211_005
2023/01/05(木) 18:45:50.33ID:6GZFvj4Q0
コピペよりインテリセンス?オートコンプリート?をよく使う
2023/01/05(木) 19:02:35.19ID:uFuuDD5j0
読者アンケートの結果ごときで
会員登録で続きをご覧いただけますと来たか
2023/01/05(木) 19:18:25.74ID:DbVL8BP10
変数のレキシカルスコープを導入してくれ
2023/01/05(木) 19:39:15.56ID:+qdyai3T0
そういうのって登録するとわんさかスパムメールが届くことになる
2023/01/05(木) 20:37:35.36ID:aM58GnUZp
Pythonはレキシカルスコープ採用してるって出てくるけど変数のレキシカルスコープはまた違うの?
2023/01/05(木) 20:37:52.79ID:AqbKvwuBd
>>445
使ってない変数が現れたら簡単に検出できるんでしょ?
ならコピペする必要なくない?
453デフォルトの名無しさん (アウアウウー Sac7-yDM8)
垢版 |
2023/01/06(金) 16:48:17.73ID:YIB2cDqha
>>440
Nim 便利ょ
2023/01/06(金) 17:02:10.21ID:nq1XWMD+0
ちょっと文法が似てるだけの別言語やん
2023/01/06(金) 17:04:24.79ID:csJ7DXSap
>>453
Nim良さそうだけど全然流行ってる感じないね
そもそもPythonがライトユーザー向けに適合し過ぎてて進化の必要ないのかもね
456デフォルトの名無しさん (アウアウウー Sac7-Dewi)
垢版 |
2023/01/06(金) 17:36:13.11ID:YIB2cDqha
別言語だけど python と相性良い方
2023/01/06(金) 17:41:53.43ID:nq1XWMD+0
JavaとJavaScriptくらい違う
2023/01/06(金) 17:45:56.69ID:DjpXTv+h0
ほな一緒やないかい
459デフォルトの名無しさん (ワッチョイ 1a03-uhAF)
垢版 |
2023/01/06(金) 20:18:53.27ID:Hxt0hqaC0
どこがやねーんっ
460デフォルトの名無しさん (スップ Sdba-kLll)
垢版 |
2023/01/06(金) 23:55:41.03ID:Hw74BWkVd
pythonを-cオプションでワンラインフィルタ作るときって便利なやり方ない?
これ相当のものをワンラインで書けるようにしたい

def inputs():
while True:
try: yield input()
except EOFError: return

for x in inputs(): print(x.upper())

EOFErrorの無視は終了コードが失敗になるから不可
sys.stdin.read().split("\n")利用はstdinのバッファリングのオンオフを切り替えられないから不可
2023/01/07(土) 00:31:00.42ID:xLvAB63F0
python -uc 'import sys; sys.stdout.writelines((print(x) or x.upper()) for x in sys.stdin)'

これだと行バッファ不可避だからsys.stdin.read(n)で書かんとか
2023/01/07(土) 00:38:08.36ID:xLvAB63F0
多用するならPerlの-pe/-ne相当になるモジュール用意してフィルタだけ書くスタイル
2023/01/07(土) 00:49:55.38ID:lVhOhIz00
M1 Macでfor文を勉強中なんだけど、

names = ['A', 'B', 'C']
for name in names: print(name +'さん')

これをターミナルで実行しても

「・・・」

と表示されるだけで何の反応もない
M1だから、でしょうか。

あとでWindowsでも試してみる
2023/01/07(土) 01:24:54.56ID:4BI3EQQz0
もっかいエンター押せ
2023/01/07(土) 02:01:54.97ID:GmV1yQnL0
ここに書けるなら、Sandbox にも書けるだろう
2023/01/07(土) 02:09:26.56ID:WGkjV5JA0
>>463
釣りはやめろ
467デフォルトの名無しさん (ワッチョイ 1176-1Rsz)
垢版 |
2023/01/07(土) 03:23:48.08ID:odL5Q3k30
>>462
ああそうか 単にフィルタ部だけ受け取ってexecしてしまえば楽だったか
ありがとう
2023/01/07(土) 04:05:10.65ID:79bETjVCM
特定のフォルダを5分おきに監視して、新たに作成されたファイル名を
SQLiteテーブルに登録していく…的なことをやりたい
単なるループで作るとCPU食って固まってしまうので非同期処理をする
必要があると思うんだけど、テンプレみたいなコードどっかにないですかね
asyncとかドキュメント見ても難しくて理解できないので…
2023/01/07(土) 06:05:45.34ID:dqXrk0CZa
cron
470デフォルトの名無しさん (ワッチョイ ab33-veFr)
垢版 |
2023/01/07(土) 07:43:49.02ID:amZltHqL0
なんでるーぷだとcpu食って固まるの?
2023/01/07(土) 07:44:51.16ID:GR5Mm1St0
cpuに食えるだけ食わせるからだよ
2023/01/07(土) 07:53:52.52ID:dqXrk0CZa
Ruby で、1行ずつ読み込んで処理する、1-liner のフィルタは、

ls | ruby -lne 'print $_.upcase'

ARGF を1行ずつ読み込んで、変数$_ に格納する。
ARGF とは、複数のファイルや標準入力を連結して、1つにした仮想ファイル

ruby -lne 'print $_.upcase' a.txt b.txt
2023/01/07(土) 08:28:19.88ID:GENmLOTj0
>>468
https://pypi.org/project/watchdog/
とか
libev/libeventのバインディングなら他もたくさん
2023/01/07(土) 09:51:45.92ID:E1WCWcUY0
>>468
それ非同期処理は関係なくね?
というかIOを非同期にしてスレッドが待たなくなったらよけいにCPUを回すことになると思うが。
2023/01/07(土) 09:59:59.53ID:QtB2nOqPM
sleep挟むだけじゃない?
476デフォルトの名無しさん (ワッチョイ 5b5c-FOYR)
垢版 |
2023/01/07(土) 10:00:12.84ID:rucp1FJJ0
inotify
2023/01/07(土) 11:05:11.37ID:11syE16N0
一瞬でもいいからsleepを入れておけばOSがいい感じにやってくれる
それせずに固まってしまうフリーソフト多すぎ
例えば、JaneStyle
2023/01/07(土) 11:10:22.66ID:79bETjVCM
>>474
うーん実は非同期という概念すら理解できていないかも知れない
>>468のループを裏で動かしつつWindowsやアプリも普通に操作したいって話です

>>477
マジっすか
sleepで5分待たせるだけでいいなら簡単だからやってみます
2023/01/07(土) 11:53:06.20ID:iltXkPxC0
固まってしまうのは
メインスレッドで重い処理したり止めたりして
メッセージを処理しないからかな
2023/01/07(土) 12:02:42.84ID:11syE16N0
単純にメモリ内で巨大な配列の計算をしたいとかで、
人間が判るほど時間のかかる処理をする時に、
ループの中に微小なsleepを入れておくと、そのタイミングでOSがタスク切り替えできるので、
他のアプリに影響せずに処理できる

win10になってタスクをより奪いやすくなってる気がする
2023/01/07(土) 12:07:18.18ID:UFnoM8jpd
sleepってその間メッセージの処理できるの?
482デフォルトの名無しさん (ブーイモ MM4b-mEot)
垢版 |
2023/01/07(土) 12:12:22.31ID:VzD178C+M
sleepしたスレッドは他の処理はできないけど
他のスレッド・プロセスは関係ない
2023/01/07(土) 12:54:52.65ID:QtB2nOqPM
sleep(1)を300回回して終了フラグチェックとかにしても良い
484デフォルトの名無しさん (ワッチョイ e197-Kn2b)
垢版 |
2023/01/07(土) 18:13:33.04ID:Ht7NUaQk0
>>468
5分おきと言わず、ファイルシステム変更イベントを受け取るイベントドリブンにした方がいいと思う
OSによって必要なコマンドやAPIは違うと思うけど
485デフォルトの名無しさん (ブーイモ MMab-JgFh)
垢版 |
2023/01/07(土) 18:19:06.23ID:5L5/eVw7M
30代Pythonクソチョン男は強姦魔の犯罪者!
あなたの近くにいます!
父母と祖父母の戸籍謄本を提出させましょう!
2023/01/07(土) 18:22:53.32ID:+xj7TcwR0
Windows限定でいいなら、.netのAPI
FileSystemWatcherが使えると思う
487デフォルトの名無しさん (ブーイモ MM4b-mEot)
垢版 |
2023/01/07(土) 21:31:02.61ID:J6NwEuodM
>>473が書いてるwatchdogが定番ツールで
OSごとの差異を吸収してくれるよ

Linuxならinotify
WindowsならReadDirectoryChangesW(FileSystemWatcherがラップしてるWin32API)
macOSならFSEvent
2023/01/07(土) 21:42:10.72ID:11syE16N0
watchdogと言われると、モニタするんじゃなくて、止まってたらリセットするイメージが強いけど
489デフォルトの名無しさん (ワッチョイ 112c-aLII)
垢版 |
2023/01/08(日) 00:08:32.18ID:GLDV6Cyi0
常駐フォルダ監視、なにかあったらどうにかする
処理はもう脳死でwatchdog一択というくらい定番
2023/01/08(日) 00:17:02.60ID:PbsTDkd50
どう実装してもいいけど
増えて消えたとかの一瞬も捉えたいならイベントドリブンで監視する必要がある
2023/01/08(日) 00:33:09.12ID:QuJ5Wt8K0
>>480
> ループの中に微小なsleepを入れておくと、そのタイミングでOSがタスク切り替えできるので、
いつの時代の人なんだよw
他のアプリに影響したくないなら優先度下げろよ...
2023/01/08(日) 00:34:59.79ID:QuJ5Wt8K0
>>488
組込屋さんかな?
2023/01/08(日) 01:19:18.86ID:nr72jIvE0
watchdogなんて便利なのあるのか・・・
2023/01/08(日) 04:46:18.93ID:mDwtjJAva
5分sleep すると、プロセスを殺せない・生き続けるから、
その分だけ、メモリなどのリソースが使えなくなるので損

cron みたいに、その時だけ起動して、
処理が終わったら、プロセスを終了するのが良い

それかRuby on Rails, npm/yarn などのagile 開発でよく使う、webpack-dev-server みたいに、
フォルダをwatch して、ファイルが変更されたら、rebuild するとか
2023/01/08(日) 13:39:55.68ID:LG3PUlqC0
>>491
優先順位下げるとしても無限ループにsleepを入れない実装は時代とは無関係かな
2023/01/08(日) 13:50:26.68ID:QuJ5Wt8K0
>>495
何のために入れる必要あるのか説明してみ
2023/01/08(日) 14:06:13.97ID:oudk2sNr
インスタンスメソッドをインスタンスメソッドの中で定義したいんだけどみんなどうやってるの
AIに聞いたらこんな感じだったけど

class Hoge:
 def __init__(self):
  self.new_method=None
 def hoge1(self):
  def _method():
   print("hoge method1")
  setattr(self,"new_method",_method)
 def hoge2(self):
  def _method():
   print("hoge method2")
  setattr(self,"new_method",_method)

h=Hoge()

h.hoge1()
h.new_method()

h.hoge2()
h.new_method()
2023/01/08(日) 14:13:05.44ID:ZWf/GgJ8d
VBで言うループ内のDoEvents()だよ
OSのメッセージへの応答が止まり続けると応答なしになる
だからメッセージに応答させるためにsleepを入れる
CPUの優先度を上げ下げしようがメッセージへの応答は各アプリケーションに依存する
だからループの時間が長くなればどのみちメッセージの処理ができず応答なしになる
2023/01/08(日) 14:16:48.76ID:LG3PUlqC0
>>496
何が言いたいのか知らんけど、CPU張り付きによるキーボード等の割り込みが阻害されるためだろう
古いとか言われて短い無限ループにsleep入れないプログラマいたら驚くかな
一人でプログラミングしてるならまだしも、第三者が使う可能性がある状況でその実装は恐い
2023/01/08(日) 14:35:43.73ID:QuJ5Wt8K0
>>498
メッセージループの話はまた別の話

>>499
プリエンプティブマルチタスク でググってこいよ...
未だにこんなロートルがいることに驚くわ
2023/01/08(日) 14:48:33.70ID:zCdq2/Tv0
1C/1TなCPUの時代に生きているのだろう
2023/01/08(日) 15:25:04.09ID:Aip5FLUqd
>>500
優先度変更でメッセージループをどうにかできるの?
2023/01/08(日) 15:41:35.19ID:QuJ5Wt8K0
>>502
メッセージループをどうにかできるなんて書いてないんだけど、頭大丈夫?
2023/01/08(日) 15:43:30.25ID:jwImvjcq0
>>501-502
見当外れだしsleepのひとも含め連休は大量ですね
2023/01/08(日) 15:47:25.43ID:NFnoEEjj0
実際問題として、処理奪われて操作に支障が出るソフトは普通にある
win10ではそういう問題はOSでは解決できない
2023/01/08(日) 15:47:46.10ID:1vx7bEHHM
どれだけググってもビジュアルスタジオにtweepyインストールできなくて
だれかおしえろください

ターミナルでpip打ち込むと認識されないとエラーで弾かれる
2023/01/08(日) 15:54:10.06ID:kQpMGlzxd
>>503
なら優先度だけあげても他の対策がいることになるだろ?
解決しないじゃん
2023/01/08(日) 15:56:00.30ID:hARfQwsA0
今時の他コア高性能CPUであれば100%張り付きで懸念するべきのはバッテリー残量と発熱くらいで、
一瞬でも100%未満になるコアが1つあればOSのタスクスイッチングには影響はほとんどないよ
GetMessage,PeekMessage,DispatchMessageをブロックしないことだけ気をつければ、あとは思う存分CPUをぶん回してもいいよ
100.00%まできっちり回せ
2023/01/08(日) 15:57:22.58ID:PbsTDkd50
>>506
pip3
2023/01/08(日) 15:59:45.54ID:QuJ5Wt8K0
>>505
それはそのソフトのつくりがタコなだけ

>>507
VBのDoEventの話なんてしてないから他所でやってくれ
2023/01/08(日) 16:01:44.72ID:kQpMGlzxd
>>503
>>491
優先度でメッセージループをどうにもできない以上、他のアプリに出る影響は排除できないじゃん
影響出したくないからループ中にsleepって話の中で優先度変えろって話出したの誰だよw
2023/01/08(日) 16:05:00.60ID:piRgm1WA0
つまり多コアCPUであっても、各プロセスは一つだけしか使ってはいけない
2023/01/08(日) 16:05:59.38ID:kQpMGlzxd
>>510
タコなソフトにならない解決策の話なのに優先度なんて頓珍漢なこと言い続けてる自覚ねーのな
DoEvents()も書けない、コピペすらできないみたいだし、
何のためのsleepか説明されても理解できそうにないな
2023/01/08(日) 16:10:11.55ID:96z64ttd0
ここをこうしたら、こういう時にこうなるよ
って話をしないと、伝わらないと思います
2023/01/08(日) 16:11:53.62ID:piRgm1WA0
伝えるというよりからかっているのだろう
2023/01/08(日) 16:14:15.67ID:NFnoEEjj0
ID:QuJ5Wt8K0 で抽出すると、ほんの一言二言書いて反応をうかがってるだけなんだよな
多分何も判ってなくて、総叩き状態を楽しんでる
517デフォルトの名無しさん (ワッチョイ 1176-1Rsz)
垢版 |
2023/01/08(日) 16:49:42.13ID:+2bxRzY60
>>497
インスタンスメソッドの中でインスタンスメソッドを定義したとして、使う側はどうしたいんだよ

h.hoge() を読んだら h.new_method() を使えるようになる仕様でいいのか?
2023/01/08(日) 17:48:05.51ID:Ghk4Hd5x0
DoEvents、自アプリのメッセージを1つ実行する
sleep、CPUリソースを一時的に返却する(自アプリのメッセージは処理できない)

sleepしたところで自アプリのメッセージを処理しないと自アプリは固まってしまう
2023/01/08(日) 18:07:15.82ID:QuJ5Wt8K0
>>511
メッセージループを処理するスレッド(たいていメインスレッド)と >>480 が言うような重い処理のスレッド(ワーカースレッド)を分ければいいだけ
ってかまともなGUIアプリなら半ば常識だぞ
当たり前だけどワーカースレッドにsleepなんて要らん

>>513
> 何のためのsleepか説明されても理解できそうにないな
そう言うのは説明してから言わないとね

>>516
> 多分何も判ってなくて、総叩き状態を楽しんでる
分かってないのはお前な
ちゃんと プリエンプティブマルチタスク でググれって書いてあるだろ?
ググっても理解出来なかったのか?w
2023/01/08(日) 18:11:48.35ID:QuJ5Wt8K0
>>518
DoEventsなんて言ってる奴はVBAあたりしか使えないんだと思う
DoEventsとsleepの違いすら理解できてないんだろうな
2023/01/08(日) 18:13:12.88ID:piRgm1WA0
ググれと言わずに、ここで簡潔に説明することが求められています
そんなに難しいことじゃないでしょうに
2023/01/08(日) 18:22:37.54ID:2bjH6Dg5d
>>519
優先度の話はどこがどう関係してくるの?
2023/01/08(日) 19:23:01.26ID:QuJ5Wt8K0
>>521
難しくないならあんたが説明してもいいんだよ?w

>>522
話の流れも読めないのか?
>>491 > 他のアプリに影響したくないなら優先度下げろよ...
2023/01/08(日) 19:28:01.59ID:piRgm1WA0
オレは説明を聞きたいと思っている
2023/01/08(日) 19:30:28.58ID:NFnoEEjj0
ソフトのつくりがタコとか書いちゃった時点でもう詰んでるんだよ
どう言い繕っても無駄なので諦めてID変わるのを待ってろ
2023/01/08(日) 19:53:03.23ID:QuJ5Wt8K0
>>524
だから プリエンプティブマルチタスク でググればいいだろ
まああんたはわかってるだろうけど簡単に言えばタスクの切り替えはタイマーでやってるからsleepなんか入れなくてもタスクは切り替わる

> ループの中に微小なsleepを入れておくと、そのタイミングでOSがタスク切り替えできるので、
なんて言うのはWindows 3.1とかMac OS 9時代のノウハウや

>>525
タコ乙w
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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