(site
定数を除く)built-in constantsのマニュアルでは、それは述べていますその:6つの組み込み定数のうち2つが割り当て可能なのはなぜですか?
Note: The names
None
,False
,True
and__debug__
cannot be reassigned (assignments to them, even as an attribute name, raiseSyntaxError
), so they can be considered “true” constants.
私は間違っていない場合も重複して説明したように、True
とFalse
は(Pythonの3の「真」あらわす定数になりました。 )
質問:なぜ、他の2つ(Ellipsis
,NotImplemented
)が「真」であるのはなぜですか?この制限を免除したこれらを再割り当てするためのユースケースはありますか(numpy
はEllipsis
でしょうか?)
standard library typesのドキュメントでは、Ellipsis
とNotImplemented
の両方のタイプは、動作上、None
タイプと同じです。すなわち:
- は、彼らが特別な操作をサポートしていないシングルトン
- です。
この質問は、提案された重複とは関係ありません:Why were True and False changed to keywords in Python 3。それは完全に異なる何か、すなわち、Ellipsis
とNotImplemented
ではない理由を「真」の定数とを尋ねない理由True
とのものに変更False
。
ここに私の意見があります。**任意の**組み込みオブジェクトを上書きするためのユースケースはありません。そのようなコードは危険なものとして扱うべきです。一方、すべてのキーワードを作成すると、維持するのが難しくなります(C側)。だから私はPythonの進化の問題だと思う。 'None'''、' False''、 'True''は常に使われているので、特に注目しています。 – freakish
面白いことに、 'Ellipsis = 2'は問題ありませんが、' ... = 2'は 'SyntaxError:Ellipsisに代入できません。 ' –
@freakishそれは一つの意見です。 Pythonは単純に好きです(特にPython 3への移行では単純化した後で)、他の2つの名前を維持する余分な複雑さが同じ振る舞いをするcontantの一貫性よりもどれほど優れているのか分かりません。だからこそ、ユースケースがあるはずだと思ったのです。 –