一部のPython例外が小文字になっているのはなぜですか?[閉まっている]


8

Pythonでは、例外はクラスであり、そのような場合です。次に例を示しますOSError

ただし、小文字で名前が付けられている、ソケットモジュールなどのいくつかの例外があります。例:socket.timeoutsocket.error

どうしてこれなの?


2
これが答えられるかどうかはわかりませんが、非常に興味深いです。
Jared Smith

2
別の作者?確立された命名規則はありませんか?
ジョニーモップ

2
質問は「なぜいくつかのPython関数があるのcamelCaseですか?」のようなものに要約されるかもしれません。一部のライブラリは、時間の経過とともに進化してきたわずかに一貫性のないスタイルを持っています。PEP-8はこれについて話し、「同じページに全員を参加させる」試みであり、部分的に成功したと思います。
ggorlen

2
注意「なぜ」言語設計上の質問は、一般的にここでは、オフトピックと考えられている答え、あなたがバグを修正できるようにするか、そうでなければ、あなたが実際に取り掛かる方法を変更すると何かの意味で-彼らは「実用的」ではないとして、プログラミングの。(他の条件とAND結合されたstackoverflow.com/help/on-topicの 4番目の箇条書きにある「実用的で回答可能な」基準を参照してください)。
Charles Duffy、

1
この特定のケースでは、@ CharlesDuffyに同意しません。私がPythonの経験がない場合、私はそれらに特定の方法を処理する必要があることを意味する、または私を噛む可能性がある他の方法で微妙に異なっていたという特別な何かがあったと思うかもしれません。なぜ彼らが他の人のようではないのかを尋ねるのは理にかなっていると思います。
カークストラウザー

回答:


7

ドキュメントによると、

exception socket.error OSErrorの非推奨のエイリアスです。

バージョン3.3で変更:PEP 3151に従い、このクラスはOSErrorのエイリアスになりました。

PEP 3151は言う

標準の例外型はルート名前空間にありますが、それらはキャメルケースの規則を使用しているという事実によって視覚的に区別されますが、他のほとんどすべての組み込みは小文字の命名を使用します (True、False、None、EllipsisおよびNotImplementedを除く)


しかし、なぜ非ルート名前空間をキャメルケースも例外にしないのですか?それらを小文字にすることは名前空間汚染を解決するために何もしません。
BadHeuristics

1
それがPSFのあり方です。異論がある場合は、PEP
指摘してください

@Vishnudev PSFは、ソケット例外を小文字にしたくない。これらは、コードを壊さないために残された歴史的なアーティファクトです。
Terry Jan Reedy

それはおそらく3151年以降のPEPの記事で述べられていたかもしれませんが、PEP 3151の記事は逆に、「他のほとんどすべてのビルトインは小文字の命名を使用していますと示唆しており、ビルトインは小文字でなければなりません。コメントが適切でないと思われる場合はコメントを削除します@TerryJanReedy
Vishnudev

@Vishnudev「他のビルトインは小文字の命名を使用します」(python.org/dev/peps/pep-3151/#possible-objections内)は、int、float、complex、tuple、set、list、dictなどの組み込みクラスを指します。他の何人か。 docs.python.org/3/library/exceptions.html#built-in-exceptionsにリストされているbuiltinsのすべての例外はCamelCaseです。他のモジュールで定義されている追加の例外は、特に理由がない限り、そのパターンに従う必要があります。ソケットの日付は、例外がクラスやクラスインスタンスではなく文字列であった日付です。(削除すると私の応答が鈍くなります。)
Terry Jan Reedy
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.