2016-09-16 9 views
0

私はthe python language specificationを読んでおり、None, TrueおよびFalseトークンがあることがわかりました。 Noneがboolanないので、私はNoneFalseの違いを理解することができます。しかし、およそTrueFalse、なぜそこ だけBOOLEANTrueFalse は異なる動作をどのような場合はありますか?それとも意味的に違いがありますか?私は文法の違いではない は明らかに異なっているブール値について聞いてるのよPython文法のTrueとFalseの違いは何ですか?

注意。

+6

すべての21世紀は、真と偽の違いに基づいています。 – Kasramvd

+2

私はその質問を理解していません。 'True'と' False'は別個のトークンなので、両方とも文法にあります。あなたはなぜブール値がないのか尋ねていますか? 「偽」の生産? –

+1

'True'と' False'はPythonの定数なので、 'atom'と見なされます。 –

答えて

2

これは、TrueFalseがpython3の特別な名前であることを公式化したものです。これらの名前に割り当てることはできません。彼らはBOOLEANではないことを

理由は、ブール値はパーサーのvalid tokenではないことだけです。

注:あなたは(あなたが燃やす世界を見たい場合は...)あなたは実際にTrueとFalse名に割り当てることができますpython2文法、行方不明にこの詳細があります。

+1

そして、あなたはそれらを感覚を復元するために 'del'することができます! – holdenweb

+0

@holdenweb - そして、あなたはそれらをもう一度試してみることができます。しかし、あなたはまだそれらを使用して、彼らが何であるべきかを見ても、定義されていないとあなたに伝えます。 – ArtOfWarfare

+0

私は世界の火傷を見たいと思うXD –

3
atom: ('(' [yield_expr|testlist_comp] ')' | 
     '[' [testlist_comp] ']' | 
     '{' [dictorsetmaker] '}' | 
     NAME | NUMBER | STRING+ | '...' | 'None' | 'True' | 'False') 

NAMENUMBER、及びSTRINGトークン3つのクラスを表すトークンです。それらのそれぞれは、可能なトークンの無制限のセットを表します。などNUMBERとして分類することができ、多くの数リテラル、STRING Sすることができ、多くの文字列リテラルは、2つだけのブールリテラル、TrueFalseがあり

があります。トークナイザは、両方をBOOLEANとして分類するように記述されている可能性があります。持っていたかもしれないが、そうではなかった。文法全体で一度しか言及されていないので、'True' | 'False'と書くのは大したことではありません。あなたは文法的な生産

atom: ('(' [yield_expr|testlist_comp] ')' | 
     '[' [testlist_comp] ']' | 
     '{' [dictorsetmaker] '}' | 
     NAME | NUMBER | STRING+ | '...' | 'None' | 'True' | 'False') 

に言及している。これは、単に特定の他の言語要素と同じ状態を、文字列にNoneを与えTrue、およびFalseリンク先の参照からおそらく

関連する問題