Python - よく使うモジュール - type 型の取得

 クラウディア
1. 概要
2. 判定していないと
3. 型の取得

1. 概要

 厳密に型を使わないとえらいことになったりするのです。  本項は、下記の記事を参考にさせていただきました。
Pythonで型を取得・判定するtype関数, isinstance関数 | note.nkmk.me

2. 判定していないと

 下記のようなソースを書いて

array = [ 'abc', 'def',  1 ]

for obj in array:
  print(obj)

  if (obj.startswith('a')):
    print(' → a で始まっている')
  else:
    print(' → a で始まっていない')
 実行すると

abc
 → a で始まっている
def
 → a で始まっていない
1
Traceback (most recent call last):
  File "/home/hogehoge/lang/python/string/type01.py", line 6, in <module>
    if (obj.startswith('a')):
AttributeError: 'int' object has no attribute 'startswith'
 てなことになっちゃいます。  「string」型じゃないものに「startswith()」は、使っちゃだめよってことですな。

3. 型の取得

 前項のような場合。  例えば

array = [ 'abc', 'def',  1 ]

for obj in array:
  print(obj)

  if (type(obj) is str):

    if (obj.startswith('a')):
      print(' → a で始まっている')
    else:
      print(' → a で始まっていない')
  else:
    print(' → 文字型じゃないのよ')
 てな書き方をすれば、結果が

abc
 → a で始まっている
def
 → a で始まっていない
1
 → 文字型じゃないのよ
 となります。  すくなくとも、こけたりは、しません。
earthcar(アースカー)