13,009
回編集
(→len関数) |
(→type関数) |
||
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> |