【python】変数の型について

2020年5月17日

変数には「型」という概念があります。
変数に格納するデータの種類になります。
今回の例では下記3つを取り扱います。
 ・文字列  ・・・ str型
 ・整数   ・・・ int型
 ・浮動小数点 ・・・ float型 

pythonの特徴として数値や文字列を変数にセットした時に自動で判断してくれる機能があります。
型を厳密に指定しなければならない言語を使ってきた人から見ると楽でしょうがないはずです(#^.^#)
ただ、型の自動設定に甘えすぎると解決できないエラーが出てくるので、裏側では型が設定されていることを理解してコーディングしましょう。

変数の型の確認方法

def sample1():
    a = 2
    print( "「2」の型   : ", type(a))

    b = 2.3
    print( "「2.3」の型 : ", type(b))

    c = "猫"
    print( "「猫」の型  : ", type(c))

変数の型を確認するにはtype関数使用します。

「2」の型   :  <class 'int'>
「2.3」の型 :  <class 'float'>
「猫」の型  :  <class 'str'>

整数であれば「int型」、浮動小数点がついていれば「float型」、文字列であれば「str型」が設定されました。このようにpythonは型をプログラマーが設定しなくても自動判別します。

型の変換「キャスト」を試す int → float

def sample2():
    a = 10
    b = float(a)
    print( "a : ", a, type(a))
    print( "b : ", b, type(b))

変数aに10を格納すると自動でint型が設定されます。
これを浮動小数が使用できるfloat型に変更するには「キャスト」と呼ばれる方法を使用します。
pythonでは型名の関数に渡すと欲しい型に変更してくれます。

a :  10 <class 'int'>
b :  10.0 <class 'float'>

型の変換「キャスト」を試す int → str

def sample3():
    a = 200
    b = str(a)
    print( "a = ", a , type(a))
    print( "b = ", b , type(b))

整数型「int型」から文字列「str型」に変換することもできます。

a =  200 <class 'int'>
b =  200 <class 'str'>

型の変換「キャスト」を試す str → int,float

def sample4():
    a = "40"
    b = int(a)
    c = float(a)
    print( "a = ", a , type(a))
    print( "b = ", b , type(b))
    print( "c = ", c , type(c))

文字列が数値形式になっていれば、整数型や浮動小数点型にキャストすることも可能です。

a =  40 <class 'str'>
b =  40 <class 'int'>
c =  40.0 <class 'float'>

型の異なる者同士を計算するとエラーになる


def sample1_error():
    a = "2"
    print( "「2」の型   : ", type(a))

    b = 4
    print( "「4」の型 : ", type(b))

    c = a + b
    print( "「猫」の型  : ", type(c)) #str型とint型で異なる方動詞の計算をしたのでエラーが起きます


if __name__ == "__main__":
    print("sample1_error:実行結果")
    sample1_error()

このプログラムは9行目にバグがあります。
一見「2 + 4」をするだけに思えますが変数aは文字列「str型」、変数bは整数型「int型」です。
互いに異なる型は計算できません。

Traceback (most recent call last):
  File "hensuu_2_error.py", line 15, in <module>
    sample1_error()
  File "hensuu_2_error.py", line 9, in sample1_error
    c = a + b
TypeError: must be str, not int

TypeErrorとなったときは型(type)が間違っていることを示すので、気を付けましょう!!

ソースコードはこちらから

このページで紹介している記事のソースコードの販売を行っています。
python基本を押さえたソースコードを収録しています。
購入頂いたソースコードは商用利用OKになります。

ソースコードの販売はこちら