はじめに
pythonの定数について調べた。
しっくりは、きていませんが。
pythonの定数
python, 定数
とかでぐぐると、リファレンスの以下の項にたどり着く。
https://docs.python.org/ja/3/library/constants.html
以下、引用。
組み込み定数
組み込み名前空間にはいくつかの定数があります。定数の一覧:
念のため、
https://docs.python.org/3/library/constants.html
も引用しておく
Built-in Constants
A small number of constants live in the built-in namespace. They are:
ここでは、以下の6つが示されている。
False
True
None
NotImplemented
Ellipsis
__debug__
値をみてみる
>>> False
False
>>>
>>> True
True
>>>
>>> None
>>>
>>> NotImplemented
NotImplemented
>>>
>>> Ellipsis
Ellipsis
>>>
>>> __debug__
True
>>>
値を代入してみる
>>>
>>> False = 3
  File "<stdin>", line 1
SyntaxError: can't assign to keyword
>>>
>>> True = 3
  File "<stdin>", line 1
SyntaxError: can't assign to keyword
>>>
>>> None = 3
  File "<stdin>", line 1
SyntaxError: can't assign to keyword
>>>
>>> NotImplemented = 3
>>>
>>> Ellipsis = 3
>>>
>>> __debug__ = 3
  File "<stdin>", line 1
SyntaxError: assignment to keyword
>>>
>>>
⇒ **↓↓↓NotImplementedとEllipsisは、値が代入できてしまう。(定数なのに。。)**ちょっと、意味の違う定数なんでしょう。
>>> NotImplemented
3
>>>
>>> Ellipsis
3
>>>
>>> type(NotImplemented)
<class 'int'>
>>> type(Ellipsis)
<class 'int'>
>>>
↑↑↑ 本気で、代入されていますね。。。intになっていますね。。。
補足
コメント頂いたので補足。
False
True
None
は、キーワードでしょう、とのこと。
以下の
https://docs.python.org/ja/3/reference/lexical_analysis.html#identifiers
を引用すると、
2.3.1. キーワード (keyword)¶
以下の識別子は、予約語、または Python 言語における キーワード (keyword) として使われ、通常の識別子として使うことはできません。キーワードは厳密に下記の通りに綴らなければなりません:
False      await      else       import     pass
None       break      except     in         raise
True       class      finally    is         return
and        continue   for        lambda     try
as         def        from       nonlocal   while
assert     del        global     not        with
async      elif       if         or         yield
また、
コメントで示して頂いた
http://python-history.blogspot.com/2013/11/story-of-none-true-false.html
https://www.python.org/dev/peps/pep-0285/
も参考になります。
まとめ
あまりしっくりは、きませんでした。
コメントなどあればお願いします。![]()
どちらかというと、**『リファレンスで残念な気分になったあるある』**という感じの記事にいまのところなっています。。。