2016-11-20 36 views
2

我不是新手程序員,我知道什麼是布爾運算符以及如何使用它們。麻煩的是,我不太明白Python的文檔中關於布爾運算的含義:Python中的布爾運算(文檔中的表示法)

or_test ::= and_test | or_test "or" and_test 
and_test ::= not_test | and_test "and" not_test 
not_test ::= comparison | "not" not_test 

這些遞歸是什麼意思?爲什麼在or_test中應該有一個「and_test」? 關於and_test的描述中的「not_test」的相同問題第三行對我來說更不理智。 任何人都可以請指導我通過這些渠道,這樣我可以終於明白了這個有些不必要的遞歸和糾結符號

回答

2

這是更大的language grammar的一部分,並在本質上規定了operator precedence

這意味着and綁定比or更嚴格。需要注意的是or_test包含and,它包含了and_test規則,這是從要麼not_test規則或and_test "and" not_test構成。 not_test本身以相似的方式構建等。

另請參閱Notation section的參考文檔。

+0

我是否知道這個EBNF表示法並沒有真正指出布爾操作的語法,而是Python解釋器在一個構造內部評估表達式的順序? –

+1

那麼,它* *都*。例如,AND布爾操作的語法拼寫爲'和'。表達語法規則通常非常簡單;將這些與[複合語句](https://docs.python.org/3/reference/compound_stmts.html)的規則進行比較。 –

+0

謝謝你,Martijn!你幫了很多忙。 –