Pythonのお勉強 Part75

レス数が1000を超えています。これ以上書き込みはできません。
2025/04/04(金) 01:47:04.18ID:UMpXJcmx0
!extend:default:vvvvv:1000:1024
!extend:default:vvvvv:1000:1024

↑スレ立てる毎に減るので、減ってたら3つに補充すること。

※前スレ
Pythonのお勉強 Part74
https://mevius.5ch.net/test/read.cgi/tech/1726881242/
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
963デフォルトの名無しさん (ワッチョイ 1b03-TYAr)
垢版 |
2025/10/04(土) 11:13:46.38ID:Dyjoms350
assertやraiseはそもそも関数にできるんかい?
2025/10/04(土) 11:24:37.65ID:Lrd6UCHyM
>>962
raiseはプリミティブな操作だから
raiseが関数だったとして、じゃあraise関数をどうやって実装する?
結局Pythonのインタプリタに直接組み込むしかないだろう。だから意味がない。
assertについては、assertを無効にする場合は式の評価自体を飛ばさなければならない。そんなことは普通の関数では実現できない。
2025/10/04(土) 13:03:57.65ID:lfhYKLud0
>>964で指摘されている点は、インタプリタ上で特別扱いしないと対応できない(通常の関数の枠内では処理できない)というのは分かるんだけど、逆にいうと、インタプリタが特別扱いをするのであれば、関数呼び出しのインターフェイスをすることもできなくはないわけでしょう。
assert文の2つ目の式にAssertionErrorに渡す引数を指定するという構文は直感的に分かりにくいなと以前から思っていて、仮に関数呼び出しのインターフェースで呼べるならそんなに違和感ないなとちょっと思っただけ。積極的にそうした方がいいとかそうすべきと主張するつもりはないよ。
2025/10/04(土) 13:49:26.07ID:Lrd6UCHyM
>>965
Pythonだと通常の関数呼び出しになってたら特別扱いは難しい
別のraise関数が定義されてるかもしれないからな
じゃあraiseという名前だけをキーワードとして特別扱いするか?それraise文と何が違うの?
ってこと
2025/10/04(土) 14:08:02.28ID:lfhYKLud0
仮に特別扱いするなら、raise を一種のキーワードとすることになるんだろうね。raise文との違いは構文。もともとraise文の構文ってちょっと分かりにくくないかというのが元の発想だからね。
どちらかというと、raise文の構文は直感的にちょっと分かりにくいので関数呼び出し風の構文糖があったら良かったのに……という方が言いたいことに近いかもしれない。
2025/10/04(土) 14:18:48.32ID:ZS4Jz9di0
そんな形式上のものはシンタックスシュガーでどうにでもなる
2025/10/04(土) 15:12:23.29ID:cv59dmAz0
仮にraiseを関数化するとしたらビルトイン関数になるわけでキーワードとして特別扱いするのとは違う
ビルトイン関数を別のraise関数で上書きしたならその時の動作は上書きした人が責任を持てばいい

ただraiseとassertを同じカテゴリで話すのはどうかと思う
raiseはreturn, break, continue, yieldなどと同じcontrol flow statementなので通常関数とは別のカテゴリとして扱うのが言語を使う側にとっても作る側にとっても自然かつ楽

raiseと違いassertはprintなどと同じでビルトイン関数のほうが使う側には自然
コンパイラを改良する労力をかけたくなかったからステートメントのままなんだと思う
2025/10/04(土) 15:56:42.08ID:lfhYKLud0
assert と raise とで区別すべきというのは同感(>>967ではボケていてraiseって書いちゃっているけど、965に書いたとおりこの話は基本的にはassertを想定している)。
ビルトイン関数にするかキーワードにするかというのは正直そんなに意識はしていなかったかな。仮にビルトイン関数にするとしても通常の関数とは異なりインタプリタによる特別扱いが必要なら、いっそキーワードにしてしまう方が簡単なような気もするけど、まぁ、どちらでも良いのかなと。
Pytnonの場合、yieldのような前例があるから同じ構文の中の一定の場合だけを特別扱いするということに比較的抵抗がない文化なのかなとも思うけど、assert に関しては文のままでいい(処理系に手を入れてまで関数っぽいインターフェイスを提供する必要はない)というのが現時点までの開発陣の判断ということよね。個人的にはちょっと残念だけど、まぁ仕方ないのかなとは思う。
2025/10/04(土) 16:09:30.50ID:ZS4Jz9di0
raiseのノリでexitと書いて何故か終わらない
2025/10/04(土) 17:51:28.50ID:cv59dmAz0
>>970
今後の拡張でコンパイラが利用可能なアノテーションを関数に付与できるような仕組みでもできればそれを活用してassertを関数化する可能性は個人的には十分あると思う

逆にassertだけのためにそういう仕組みを追加したり内部的にもassertという名前縛りで関数呼び出し箇所のbytecodeを出力しないようにする変更は費用対効果的にまずないと思う
2025/10/04(土) 19:23:00.85ID:MKE3mvtR0
まぁ、yield と assert とでは色々違うもんね。
974デフォルトの名無しさん (ワッチョイ ae60-9taF)
垢版 |
2025/10/05(日) 05:42:31.29ID:Wx5pDard0
仮想環境をゴリゴリ作るという観点からanacondaは優秀だと思う。
それ以外は…
975デフォルトの名無しさん (オッペケ Sr75-SPhl)
垢版 |
2025/10/05(日) 07:52:01.85ID:75RY5Ni2r
俺はminiconda
976デフォルトの名無しさん (ワッチョイ ae02-GsXg)
垢版 |
2025/10/05(日) 08:44:09.44ID:/6a5ZxIp0
時代はUV何ですよ!!(´・ω・`)
2025/10/05(日) 09:26:26.39ID:DxOKijn50
>>974
もうuvがいいぞ
2025/10/08(水) 06:55:25.58ID:lcCd82qT0
ファイル削除にimport osとかするのがなんか抵抗あったけど、
pathlib使ってるならp.unlink()で良かったんだな
979デフォルトの名無しさん (ワッチョイ 05f9-lCgs)
垢版 |
2025/10/08(水) 13:40:49.01ID:XrXXkqZa0
unlinkって名前わかりにくい気がするけどそういうもんなんかな
2025/10/08(水) 13:48:26.60ID:lcCd82qT0
deleteとremoveの違い
deleteするとなくなってしまうけど、removeは消えるだけで実体はある
unlinkはもっと明示的にいつでも復活できそう
981デフォルトの名無しさん (ワッチョイ 762a-8Ckq)
垢版 |
2025/10/08(水) 14:07:17.26ID:UyQ1K/rS0
>>978
なぜ
import os に抵抗があって
import pathlib には無いの?
2025/10/08(水) 14:17:47.05ID:lcCd82qT0
pathlibは神ライブラリだから
openするだけだとしてもPathオブジェクトにしとくと後々役に立つ
2025/10/08(水) 20:10:03.79ID:PPRPrFFf0
>>980
>>982はまだ個人の感想だけど平然とウソ書いてくるのがこわい
AIさんかな
2025/10/08(水) 21:22:40.69ID:a5q/Ytzw0
スラッシュで文字列とPath結合できるの好き
2025/10/08(水) 21:27:24.89ID:lcCd82qT0
パスを文字列で持つこと自体が恐らくアンチパターン
2025/10/08(水) 23:11:40.46ID:DEFvJ9Zk0
ファイル操作が多い場合にはpathlibが便利なのかなとは思うんだけど、そもそもファイル操作自体あまりしないから、いつもpath =r'...' みたいな感じで文字列にしちゃっているわ。
2025/10/08(水) 23:14:49.71ID:lcCd82qT0
読み込む用のファイルがあって、拡張子だけ変えたいとか、
ファイル名の部分に-oldと付けたいとか、別のディレクトリに同じ名前でコピーしたいとか、
そういう操作を正規表現とか駆使しながら頑張って文字列操作するのは、
めんどくさいし読みにくいしバグる
人間がやるべきではない
2025/10/09(木) 00:23:35.01ID:YJJHW0Xm0
そういう処理が必要になったら、その時点で検討するって感じかな。もちろん、パスならとりあえずPathオブジェクトにしとけっていう流儀もあると思うけどね。
2025/10/09(木) 22:53:20.67ID:QQVMS2V+0
言ってしまえば「動けばよい」「分かればよい」だと思うが
扱おうとしているものを扱うための機能があるのなら、
それは使ってみたいじゃないの
990デフォルトの名無しさん (ワッチョイ 716e-5Sj8)
垢版 |
2025/10/14(火) 05:03:55.10ID:CT5W8cc20
ゲームの中でコーディング・実行するんじゃなく
VSCodeからコーディング・実行するようなのないの?
Turtle的な

Steamで20% OFF:農家は Replace() されました
https://store.steampowered.com/app/2060160/_Replace/
2025/10/14(火) 12:39:23.72ID:QgKXwP6qM
外部エディタで変更すると自動反映するって書いてあるぞ
2025/10/14(火) 22:11:58.01ID:BWpaqpg00
ライブラリ追加できない環境でpdf読みたいので、
仕方なく構造調べてるけど複雑すぎる
993デフォルトの名無しさん (ワッチョイ c940-pEGx)
垢版 |
2025/10/16(木) 01:35:31.23ID:b1XJiiUu0
新たにpy installなんてコマンドができてそれで管理というが
使いやすいものかどうか
uvが流行ってるの見て乗ってきたのか

でもこれでライブラリ間のバージョンコンフリクト防げるかどうかには特にまだ情報が無かったなあ
994デフォルトの名無しさん (ワッチョイ 7ba0-BZc0)
垢版 |
2025/10/18(土) 22:03:59.48ID:RYa38xSb0
スレ立てたわよ

Pythonのお勉強 Part76
https://mevius.5ch.net/test/read.cgi/tech/1760792623/
995デフォルトの名無しさん (ワッチョイ 13ad-KFK9)
垢版 |
2025/10/18(土) 22:15:15.24ID:nI8EUje/0
おつpy
996デフォルトの名無しさん (ワッチョイ 8e94-teMw)
垢版 |
2025/10/19(日) 23:04:42.61ID:QtdWq4TO0
ちゃんと1000まで使いなさい
997デフォルトの名無しさん (ワッチョイ 992a-H8q4)
垢版 |
2025/10/20(月) 08:13:00.14ID:qJ5Vu7Mi0
Py千
2025/10/20(月) 10:15:14.05ID:pvJXdOVW0
injectorってinjector.bindしてから使うものなの?
@injectアノテートでproviderから自動的に登録されるものと思っていた。
C#のDependency Injectionと同じなのね。
999デフォルトの名無しさん (ワッチョイ d62a-H8q4)
垢版 |
2025/10/20(月) 18:11:33.94ID:6H6JHLyc0
C千 武田
2025/10/21(火) 23:31:14.13ID:z5jgx7Ie0
質問どうぞ
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 200日 21時間 44分 11秒
レス数が1000を超えています。これ以上書き込みはできません。