Skip to main content

and, or, not

ブール値に関わるオペレータとして、and, or, notを紹介します。

これらのオペレータは、複数のブール値を使いたい場合や、逆のブール値を指定したい場合に用います。

最初にand, or, notの概要を紹介し、次にこれらのオペレータに関わるbool()関数について解説し、後半でより詳しくそれぞれのオペレータを解説します。最後にorを使った応用を紹介します。

概要

and

andオペレータは、andの両側のブール値がTrueである場合にTrueを、それ以外の場合にFalseを返します。

>>> True and True
True
>>> True and False
False
>>> False and False
False

or

orオペレータは、orの両側のブール値のうち一つ以上がTrueである場合Trueを、両方がFalseの場合Falseを返します。

>>> True or True
True
>>> False or True
True
>>> False or False
False

not

notオペレータは、notの後に来るブール値を逆のものに変えます。

>>> not True
False
>>> not False
True

各オペレータの優先順位

and, or, notオペレータは、

  1. not
  2. and
  3. or

の順番に処理されます。

>>> True or False and not True
True

bool()関数

bool()関数は、Pythonの組み込み関数の一つで、与えられた引数をもとにTrueまたはFalseを返します。Flaseを返すように指定されているものでなければTrueが返されます。

Flaseを返すように指定されているものに、「None」、「0」、空の文字列「''」や空のリスト「[]」があります。

>>> bool(None)
False
>>> bool('abc')
True
>>> bool('')
False

bool()関数については公式ドキュメントの組み込み関数組み込み型でより詳しく解説されています。

and, or, notのより詳しい解説

and

x and y

は、下の関数と同様の処理を行います。

def and_operator(x, y):
if bool(x) == False:
return x
else:
return y

つまり、bool(x)Falseならばxの値が、bool(x)Trueならばyの値が返されます。

or

x or y

は、下の関数と同様の処理を行います。

def or_operator(x, y):
if bool(x) == False:
return y
else:
return x

つまり、bool(x)Falseならばyの値が、bool(x)Trueならばxの値が返されます。

not

not x

は、下の関数と同様の処理を行います。

def not_operator(x, y):
if bool(x) == False:
return True
else:
return False

つまり、bool(x)FalseならばTruebool(x)TrueならばFalseが返されます。

orを使った応用例

orを使って条件分岐のようなことを行うことが可能です。下の例を見てみましょう。

def name_function(あだ名=None, 本名=None):
print((あだ名 or 本名 or '名無し') + 'さんこんにちは。')

この関数では、

1行目で引数を2つとる関数を定義し、同時に引数のデフォルトの値をNoneに設定しています。Noneについては今まで触れたことがありませんが、簡単に言うと「なにもない状態」を表します。

2行目ではorを使って関数の挙動を指定しています。

この関数を使ってみます。

>>> name_function('キリン', 'Giraffa camelopardalis')

と入力した場合は、

あだ名 or 本名 or '名無し'

の処理が

True or True or True

となり、「'キリン'」が返されます。

>>> name_function(None, 'Giraffa camelopardalis')

と入力した場合は、

あだ名 or 本名 or '名無し'

の処理が

False or True or True

となり、「'Giraffa camelopardalis'」が返されます。

>>> name_function()

と入力した場合は、

あだ名 or 本名 or '名無し'

の処理が

False or False or True

となり、「'名無し'」が返されます。