1. ホーム 
  2. 備忘録 
  3. Python

条件分岐


比較演算子と論理演算子

条件分岐を扱うにあたり、条件部分に使用する比較演算子と論理演算子をまとめておく

Python での各演算子は以下の通りである

用途 演算子
a が b と等しい a == b
a が b と異なる a != b
a が b より小さい a < b
a が b より大きい a > b
a が b 以下である a <= b
a が b 以上である a >= b
a も b も真である a > 0 and b > 0
a または b が真である a > 0 or b > 0

In と Not

他にも条件として使われることの多い In と Not についても記載しておく


# In は 配列や辞書型などの中に含まれているかを判定する
y = [1, 2, 3]
x = 1

if x in y:
    print('include')

if 100 not in y:
    print('Not Include')

# Not は 後ろに続く判定式を否定する
is_ok = True
if not is_ok:
    print('good')

Is

あるオブジェクトの型を判別したり、同じオブジェクトを指しているか確かめたいときには is を用いる

is を使うメリットは以下の2点である


  • == よりも is のほうが処理が速い
  • == はオーバーロードできるので、想定通りの結果とならない場合がある

is を用いた例を以下に記載する


# None判定は is を用いて行う
is_empty = None
if is_empty is None:
    print('None')  # None


# 型判定のみを行いたい場合はtype(val)と比較する
a = "hello"
b = 3.14
if type(a) is str:
    print('str')  # str
if type(b) is float:
    print('float')  # float


# 継承元まで含めて型を確認したい場合は isinstance() を用いる
class Base:
    pass

class Derive(Base):
    pass

derive = Derive()
if type(derive) is Base:
    print('not called')
if isinstance(derive, Base):
    print('derive base')  # derive base


"""
:補足:
以下の変数 a と b は一見異なるIDになるように見えるが、実際は出力してみると同じIDを指している
イミュータブルな型(プリミティブ型など)の同じ値のインスタンスが複数ある場合、同じIDを参照することがある
これはインタープリタによって同じ値のオブジェクトは同じオブジェクトを使うように最適化されているからである
"""
a = 1
b = 1
print(id(a))  # 2962077870384
print(id(b))  # 2962077870384
if a is b:
    print("true")

if文

Python でプログラムを条件分岐させる方法としてif文がある

if文の使い方は以下の通りである


x = 10

# プログラムは基本的に上から順に実行されるため、条件式の順序には気を付けること
if x < 0:
    print('負の値です')
elif x == 0:
    print('0です')
elif x == 10:
    print('10です')
else:
    print('正の値です')

a = 5
b = 10

# 条件分岐を重ねて行いたい場合はインテントに注意すること
if a > 0:
    print('a は 正の値です')
    if b > 0:
        print('b は 正の値です')

switch文について

Python には switch文 は用意されていない

主な理由としては if~else文 によって同じことが実現できるからである

しかしながら、Python3.10 以降には、switch文 と似た構造で書ける match文 が用意されている

こちらについては現状では割愛させていただく