我在阅读the python language specification,发现有一个None
, True
和False
令牌。我可以理解None
和 False
之间的差异,因为None
不是一个boolan。但是,关于True
和False
,为什么不是 只是BOOLEAN
呢?是否有任何情况下True
和False
行为不同?还是有任何语义上的差异?python语法中的True和False有什么区别?
请注意,我正在问语法差异,而不是布尔值,其中 明显不同。
我在阅读the python language specification,发现有一个None
, True
和False
令牌。我可以理解None
和 False
之间的差异,因为None
不是一个boolan。但是,关于True
和False
,为什么不是 只是BOOLEAN
呢?是否有任何情况下True
和False
行为不同?还是有任何语义上的差异?python语法中的True和False有什么区别?
请注意,我正在问语法差异,而不是布尔值,其中 明显不同。
这是一个事实的形式化,True
和False
是python3中的特殊名称:你不能分配给它们。
他们不是BOOLEAN的原因很简单,布尔不是解析器的valid token。
注:你会发现这个细节在python2语法,在那里你可以实际上(如果你想观看世界烧伤...)分配到的名字真与假失踪。
然后你可以'删除它们来恢复意义! – holdenweb
@holdenweb - 然后你可以再次尝试'删除它们,但它会告诉你它们没有被定义,即使你仍然可以使用它们并且看到它们应该是它们。 – ArtOfWarfare
我想看世界烧伤XD –
atom: ('(' [yield_expr|testlist_comp] ')' |
'[' [testlist_comp] ']' |
'{' [dictorsetmaker] '}' |
NAME | NUMBER | STRING+ | '...' | 'None' | 'True' | 'False')
NAME
,NUMBER
,并STRING
是表示三类令牌标记。它们中的每一个代表一组可能的令牌。有迹象表明,可以归类为NUMBER
数量很多文字,许多字符串文字,可以是STRING
S等
只有两个布尔文字,True
和False
。可以编写标记器将它们分类为BOOLEAN
。可能有,但没有。他们只在整个语法中被引用一次,所以编写'True' | 'False'
没什么大不了的。
整个21世纪都是基于真与假的区别。 – Kasramvd
我不明白这个问题。 “真”和“假”是不同的标记,所以它们都在语法中。你问为什么没有'布尔:'真'| '假'生产? –
'True'和'False'是Python常量,因此被认为是'atom'。不知道你还在寻找什么 –