「Pythonの基礎 - 組み込み関数」の版間の差分

ナビゲーションに移動 検索に移動
 
450行目: 450行目:
  val: 4
  val: 4
  total: 9.5
  total: 9.5
</syntaxhighlight>
<br><br>
== isinstance関数 (オブジェクトのデータ型の判定) ==
<code>isinstance</code>関数は、第1引数に指定したオブジェクトが第2引数に指定したデータ型と等しいかどうかを返す。<br>
<syntaxhighlight lang="python">
isinstance(object, classinfo)
</syntaxhighlight>
<br>
第1引数に指定したオブジェクトが第2引数に指定したデータ型のオブジェクトの場合、または、サブクラスのオブジェクトの場合に<code>True</code>を返す。<br>
<syntaxhighlight lang="python">
print(isinstance(1, int))
print(isinstance(1, str))
print(isinstance("abc", str))
print(isinstance("abc", int))
# 出力
True
False
True
False
</syntaxhighlight>
<br>
複数のデータ型と比較する場合、第2引数に複数のデータ型を持つタプルを指定する。<br>
複数のデータ型のいずれかと一致する場合、<code>True</code>を返す。<br>
<syntaxhighlight lang="python">
print(isinstance(1, (int, float)))
print(isinstance(2.5, (int, float)))
print(isinstance("ab", (int, float)))
# 出力
True
True
False
</syntaxhighlight>
<br>
<code>isinstance</code>関数と<code>type</code>関数の違いとして、<code>isinstance</code>関数は、第2引数がデータ型のサブクラスのオブジェクトの場合でも<code>True</code>となる。<br>
そのため、サブクラスも含めて同じデータ型かどうか確認する場合は、<code>isinstance</code>関数を使用するとよい。<br>
<br>
以下の例では、<code>bool</code>型は<code>int</code>型のサブクラスのため、<code>bool</code>型のオブジェクトである<code>True</code>は<code>int</code>型と同じため、<code>True</code>となる。<br>
<syntaxhighlight lang="python">
print(isinstance(3, int))
print(isinstance(True, int))
print(isinstance(True, bool))
# 出力
True
True
True
</syntaxhighlight>
<br>
以下の例では、リストに格納された値のデータ型を判定して、整数型または浮動小数点数型の場合は値を出力して合計を計算している。<br>
<code>True</code>も整数型として識別されている。(<code>True</code>は、数値の<code>1</code>として扱われる)<br>
<syntaxhighlight lang="python">
mylist = [2, "ab", 3.5, True, 4]
total = 0
for val in mylist:
    if isinstance(val, (int, float)):
      print("val: " + str(val))
      total += val
print("total: " + str(total))
# 出力
val: 2
val: 3.5
val: True
val: 4
total: 10.5
  </syntaxhighlight>
  </syntaxhighlight>
<br><br>
<br><br>

案内メニュー