「not(True) in [False, True]」がなぜFalseを返すのでしょうか? 質問する

「not(True) in [False, True]」がなぜFalseを返すのでしょうか? 質問する

こうすると:

>>> False in [False, True]
True

それは を返しますTrue。 がFalseリストにあるからです。

しかし、もし私がそうするなら:

>>> not(True) in [False, True]
False

が返されますFalse。一方、not(True)は と等しくなりますFalse

>>> not(True)
False

なぜ?

ベストアンサー1

演算子の優先順位 2.x3.xの優先順位は の優先not順位よりも低いですin。したがって、これは次の式と同等です。

>>> not ((True) in [False, True])
False

あなたが望むのはこれです:

>>> (not True) in [False, True]
True

@Ben が指摘しているように、 は決して書かずnot(True)、 を使用することをお勧めしますnot True。前者は関数呼び出しのように見えますが、 はnot演算子であり、関数ではありません。

おすすめ記事