画像引用:https://eng-entrance.com/java-array-basic
コンパイル言語(CとかJava)は、配列に型を定義するのがだ、Pythonは配列に型を定義しなくても問題なく実行できてしまう。
intとstrを混在する配列を書けてしまう
例えば以下のコードは問題なく定義できてしまう。うほっ。マジっすか。
obj_array = [1, 2, 3, 4, 5, 'a'] print("元の配列:", obj_array)
int型であることを明確に定義
もし配列の各要素がint型であることを明確に定義したい場合は、以下のようにarray.array()の第一引数にintの意味のiのtypecodeを指定する。うほっ。i
というタイプをミスりそう。
int_array = array.array('i', [1, 2, 3, 4, 5]) print("元の配列:", int_array)
sum()関数を安全に使用
int型を定義することで、len()やsum()関数を安全に使用することができる
# 配列の長さを取得 print("配列の長さ:", len(int_array)) # 配列内の要素の合計を計算 print("要素の合計:", sum(int_array))
コーディング中に気付けるの?
とはいっても、コンパイル言語のように事前にコンパイルするわけではないので、コーディング中に問題に気付けるわけではない。
pythonに詳しいわけではないので、もしかしたら気付ける方法があるのかもしれないが、現時点ではわかっていない。
以下の場合は、実行時にarray.array()のところでエラーが発生する。エラーの内容はTypeError: 'str' object cannot be interpreted as an integer
。
int_array = array.array('i', [1, 2, 3, 4, 5, 'a']) print("元の配列:", int_array)
以下の場合は、実行時にsum()のところでエラーが発生する。エラー内容はTypeError: unsupported operand type(s) for +: 'int' and 'str'
obj_array = [1, 2, 3, 4, 5, 'a'] print("元の配列:", obj_array) # 配列内の要素の合計を計算 print("要素の合計:", sum(obj_array))
所感
個人的には型をきちんと指定できる言語のほうが好きだが、冗長なコードになることは確かで一長一短。
この機能も必要を感じる人と、感じない人がいて、どちらの意見もわかる気はする。
ちなみにこの機能はpython3.12からになるのでご注意を。