2017-06-04

Python: a == not b は構文エラー

Pythonのドキュメントに意外なことがかいてあるのを見つけた. not は非ブール演算子よりも優先度が低いので、 not a == b は not (a == b) と解釈され、 a == not b は構文エラーです。 Cではa == !ba == (!b)と解釈されるので, Pythonでも同様だと思っていたが, 構文エラーになるらしい.
>>> a = True
>>> b = False
>>> a == not b
  File "", line 1
    a == not b
           ^
SyntaxError: invalid syntax
>>> a == (not b)
True

なお, Awkではこうなる:

$ :| awk 'BEGIN { a=1; b=0; print a==b; print a==!b }'
0
1

0 件のコメント:

コメントを投稿