Предположительно из ссылки, на которые вы связаны вы имеете в виде грамматические производств
atom: ('(' [yield_expr|testlist_comp] ')' |
'[' [testlist_comp] ']' |
'{' [dictorsetmaker] '}' |
NAME | NUMBER | STRING+ | '...' | 'None' | 'True' | 'False')
Это просто даете строку None
, True
и False
такому же статус, как и некоторые другие элементы языка. Хотя было бы возможно создать определение булевого атома, которое могло бы быть либо True
, либо False
и использовать это в грамматике, какую цель это послужило бы?
На самом деле, даже в 2.7 вы можете попробовать удалить определения True
и False
из __builtins__
имен:
>>> del __builtins__.True
>>> del __builtins__.False
Traceback (most recent call last):
File "/Users/sholden/.virtualenvs/jlab/lib/python2.7/encodings/utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
NameError: global name 'True' is not defined
Интересно, что если удалить False
первый нет никаких жалоб по поводу удаления True
:-)
Однако, это делает даже вполне стандартный Python не имеет смысла вообще:
>>> 1 == 1
Traceback (most recent call last):
File "/Users/sholden/.virtualenvs/jlab/lib/python2.7/encodings/utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
NameError: global name 'True' is not defined
Это подчеркивает, что Python был произведен, как «язык программирования для совершеннолетних «. В конечном итоге это дает вам достаточно веревки, чтобы повесить себя, если вы полны решимости сделать это.
Весь 21-й век основан на различии между True и False. – Kasramvd
Я не понимаю вопроса. «Истина» и «Ложь» - это разные жетоны, поэтому они оба находятся в грамматике. Вы спрашиваете, почему нет 'boolean: 'True' | «Ложное» производство? –
'True' и' False' являются константами Python, поэтому считается «атомом». Не уверен, что еще вы ищете –