2.1 型を調べる
コードの特定の箇所で、変数に格納されているデータがどの型か分からない場合があるよね。そんなときのために、Pythonには
関数 type()
があるんだ。この関数を使えば
オブジェクトの型を判定できるよ。
これは組み込み関数で、指定したオブジェクトの型を返してくれるんだ。デバッグ、データの検証、またはデータ型によって異なるロジックを実装するときに役立つよ。
type()
関数の動作原理
type(x)
を呼び出すと、Pythonは変数xの型を表す特殊なtype
オブジェクトを返してくれるんだ。例えば:
x = 1
print(type(x)) # 結果: <class 'int'>
x = "こんにちは"
print(type(x)) # 結果: <class 'str'>
x = [1, 2, 3]
print(type(x)) # 結果: <class 'list'>
画面に「class」という単語が表示されるのに気付いたかな。これは、int
, str
, list
などの型もクラスであるからなんだよ。これらは組み込みクラスで、Pythonに最初から含まれているから宣言する必要はないんだ。
実際の使い方
type()
関数は、データ型に基づいて異なるアクションを実行する必要があるシナリオでよく使われるよ。
- 変数の型に応じて異なる処理を実行することができる。
- 関数やメソッドで、引数の型が正しいかを確認する。
例えば、変数に数値が格納されていることを確認するには、次のように書くんだ:
arg = 123
if type(arg) == int:
print(arg + 10) # 結果: 133
もっと実用的な例として、変数に格納されたオブジェクトの型を確認する:
arg = "123"
if type(arg) == int:
print(arg + 10) # これは実行されない、argは文字列だから
elif type(arg) == str:
print(arg + " world") # 結果: 123 world
else:
print("未知の型")
2.2 型を明示的に指定する
Pythonでは、int()
, float()
, str()
,
tuple()
などの型変換関数を使用して、オブジェクトの型を明示的に指定できるんだ。これらの関数を使えば、ある型のデータを別の型に変換できるから、ユーザー入力の処理や数学的操作、文字列やデータコレクションを操作するときに便利だよ。
型変換関数の例
int()
: データを整数に変換する。既に何度も使ったことがあると思うけど、数値を含む文字列を渡せば、それを対応する整数に変換してくれるんだ。
num = int("123") # numは整数123になる
float()
: これもお馴染みだね。データを浮動小数点数に変換する。
num = float("123.45") # numは123.45になる
str()
: 任意のPythonオブジェクトを文字列形式に変換する。
s = str(10.5) # sは'10.5'になる
tuple()
: シーケンスをタプルに変換する。
t = tuple([1, 2, 3]) # tは(1, 2, 3)になる
list()
: イテラブルオブジェクト(例えば文字列やタプル)をリストに変換する。イテラブルオブジェクトというのは、文字列、リスト、タプルのように順番に繰り返してアクセスできるオブジェクトのことだよ。
l = list("abc") # lは['a', 'b', 'c']になる
dict()
: キーと値のペアから辞書を作成する。
d = dict([(1, 'a'), (2, 'b')]) # dは{1: 'a', 2: 'b'}になる
辞書やタプルについては、後で少し説明するけど、大まかな意味は分かったよね:特定の型が必要な場合は、上述の関数がいつでも使えるんだよ。
2.3 型変換
Pythonでは、明示的な型変換(型キャスト)を使えば、変数のデータ型を制御して変更することができるよ。これは、さまざまな操作でデータの互換性を確保したり、ユーザー入力やファイル読み込みから取得したデータの型を修正したりするのに役立つんだ。基本的に、型変換と型キャストは同じ意味で、オブジェクトのデータ型を別の型に変更するプロセスを指しているよ。
明示的な型キャストは、int()
, float()
, str()
,
tuple()
, list()
, dict()
,
set()
などの組み込み関数を使って行うんだ。
例をいくつか見てみよう:
関数 | 説明 | 入力例 | 出力例 |
---|---|---|---|
int() |
整数に変換する | int("10") | 10 |
float() |
浮動小数点数に変換する | float("20.5") | 20.5 |
str() |
文字列に変換する | str(15) | "15" |
tuple() |
タプルに変換する | tuple([1, 2, 3]) | (1, 2, 3) |
list() |
リストに変換する | list("abc") | ['a', 'b', 'c'] |
dict() |
キーと値のペアから辞書を作成する | dict([(1, 'one'), (2, 'two')]) | {1: 'one', 2: 'two'} |
set() |
リストからセット(集合)を作成する | set([1, 1, 2, 2, 3, 3]) | {1, 2, 3} |
使用例
明示的な型キャストは、以下のようなシナリオで使用されることが多いよ:
- ユーザー入力の処理: 入力されたデータが期待したデータ型に合っていることを保証する。
- データの互換性: 異なるソースやAPIからのデータを統合したり比較したりするとき。
- エラー処理: データを適切な型に変換してから操作することで、ランタイムエラーを防ぐ。
ベストプラクティスと注意点
明示的な型変換は慎重に使用しないといけないよ。例えば、float
をint
に変換する場合はデータが失われたり、数値以外の文字列を数値に変換しようとするとエラーになったりするよ。
また、一部の変換は分かりにくく、予期しない結果を引き起こすことがあるので、データを十分にチェックする必要があるよ。例えば、int
をbool
に変換したりその逆を行ったりすると意外な効果が現れることもある :)
GO TO FULL VERSION