Pythonのお勉強 Part75 (988レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
962(1): デフォルトの名無しさん (ワッチョイ 258f-MlPs) [sage] 2025/10/04(土) 10:53:29.11 ID:lfhYKLud0(1/4) AAS
printはPytnon3になるときに文から関数になったってことだけど、assert とか raise とかは文のまま。関数にすると余計なオーバーヘッドが生じてしまうとかそういう理由なのかな。
965(1): デフォルトの名無しさん (ワッチョイ 258f-MlPs) [sage] 2025/10/04(土) 13:03:57.65 ID:lfhYKLud0(2/4) AAS
>>964で指摘されている点は、インタプリタ上で特別扱いしないと対応できない(通常の関数の枠内では処理できない)というのは分かるんだけど、逆にいうと、インタプリタが特別扱いをするのであれば、関数呼び出しのインターフェイスをすることもできなくはないわけでしょう。
assert文の2つ目の式にAssertionErrorに渡す引数を指定するという構文は直感的に分かりにくいなと以前から思っていて、仮に関数呼び出しのインターフェースで呼べるならそんなに違和感ないなとちょっと思っただけ。積極的にそうした方がいいとかそうすべきと主張するつもりはないよ。
967(1): デフォルトの名無しさん (ワッチョイ 25c4-MlPs) [sage] 2025/10/04(土) 14:08:02.28 ID:lfhYKLud0(3/4) AAS
仮に特別扱いするなら、raise を一種のキーワードとすることになるんだろうね。raise文との違いは構文。もともとraise文の構文ってちょっと分かりにくくないかというのが元の発想だからね。
どちらかというと、raise文の構文は直感的にちょっと分かりにくいので関数呼び出し風の構文糖があったら良かったのに……という方が言いたいことに近いかもしれない。
970(1): デフォルトの名無しさん (ワッチョイ 25c4-MlPs) [sage] 2025/10/04(土) 15:56:42.08 ID:lfhYKLud0(4/4) AAS
assert と raise とで区別すべきというのは同感(>>967ではボケていてraiseって書いちゃっているけど、965に書いたとおりこの話は基本的にはassertを想定している)。
ビルトイン関数にするかキーワードにするかというのは正直そんなに意識はしていなかったかな。仮にビルトイン関数にするとしても通常の関数とは異なりインタプリタによる特別扱いが必要なら、いっそキーワードにしてしまう方が簡単なような気もするけど、まぁ、どちらでも良いのかなと。
Pytnonの場合、yieldのような前例があるから同じ構文の中の一定の場合だけを特別扱いするということに比較的抵抗がない文化なのかなとも思うけど、assert に関しては文のままでいい(処理系に手を入れてまで関数っぽいインターフェイスを提供する必要はない)というのが現時点までの開発陣の判断ということよね。個人的にはちょっと残念だけど、まぁ仕方ないのかなとは思う。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 1.693s*