43

ブール値を==Python で動作するように比較します。しかし、ブールnot演算子を適用すると、結果は構文エラーになります。

Python 2.7 (r27:82500, Sep 16 2010, 18:02:00) 
[GCC 4.5.1 20100907 (Red Hat 4.5.1-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> True == True
True
>>> False == False
True
>>> True is not False
True
>>> True == not False
  File "<stdin>", line 1
    True == not False
              ^
SyntaxError: invalid syntax
>>> 

なぜこれは構文エラーですか? not Falseブール値を返す式であり、有効な構文を持つ式がTrue == <x>どこにあっても有効な構文であることが期待され<x>ます。

4

5 に答える 5

56

これは、Pythonの演算子の優先順位==と関係があります(より高い優先順位があるため、インタープリターはTrueとnotを比較していると見なしますnot)。操作の順序を明確にするために、いくつかの括弧が必要です。

True == (not False)

not一般に、比較の右側では括弧なしで使用することはできません。notただし、比較の右側でを使用する必要がある状況は考えられません。

于 2011-05-23T16:47:17.780 に答える
10

演算子の優先順位の問題です。試す:

>>> True == (not False)
True

この演算子の優先順位の表を見てください。これは、==よりも厳密にバインドされているため、明らかにエラーであると解析されます。notTrue == not False(True == not) False

于 2011-05-23T16:47:36.623 に答える
-1

あなたが探しているのは「and not」だと思います。これにより、あなたが目指している結果が得られます。ブール値の比較が複合ブール式である場合は、Web サイトの複合ブール式の例を次に示します。

>>> True and True
True
>>> True and not True
False
>>> True and not False
True
>>> False and not True
False
>>> False and not False
False
>>> False and False
False
于 2014-01-08T01:24:03.740 に答える