我在閱讀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'。不知道你還在尋找什麼 –