プログラミング
記事内に商品プロモーションを含む場合があります

Pythonで型定義/宣言する方法|型ヒントの使い方をわかりやすく解説

tadanori

Pythonでプログラムを書くと気に型を宣言をしていますか? 楽なのでついつい型の指定を省いてしまいますが、型宣言した方が可読性が向上します。この記事では、Pythonで型宣言(型ヒント)する方法を解説します。

Pythonでも型の指定は可能

Pythonでは変数の型を定義しなくてもいいので、ついつい型を明示せずに記述してしまいます。

ただ、Python3.5からは型ヒントという型を宣言する仕組みが備わっています。これを利用することで、型を明示することが可能です。

他人と共有するプログラムや、後で再利用するプログラムの場合は、型ヒントを埋め込んでおくことで可読性が高くなります。

「コードの可読性向上」を向上するために型指定を心掛けましょう。

この記事では、Pythonで型を指定する方法を解説します

Pythonでは型定義ではなく「型ヒント」と呼ぶようです

あくまでもヒントであり、型が間違っていても特にエラーが出るわけではありません

この記事で紹介するのは、Python3.9以降の書き方です。

Pythonの組み込み型

まずは、Pythonの組み込み型について説明します。Pythonでよく使う組み込み型には、以下のものがあります。

Pythonの代表的な型
組み込み型説明
bool真偽値
int整数
float浮動小数点数
listリスト
tupleタプル
str文字列
set集合型
dict辞書型

これらの組み込み型について、型を明示することを考えます。

型の宣言

Pythonでは型を宣言せずに変数を定義することが可能です。

a = 10
print(a)
# 10

とはいえ、型宣言した方が良いこともあります。ここでは、Pythonで型宣言する方法について解説します

変数

変数の型宣言は以下のようになります。

:の後に型名をつけるだけです。

変数の型宣言
<変数名>:<型>

変数の宣言例:

>>> a : int = 10
>>> a
10
>>> d:dict = {'a':10, 'b':20}
>>> d
{'a': 10, 'b': 20}
>>> l:list = [1,2,3,4,5]
>>> l
[1, 2, 3, 4, 5]

関数

関数の引数、戻り値の型については以下のように宣言します

引数は:をつけて型をしていまします。また、戻り値は->に続けて型を宣言します。

関数の型宣言
def <関数名>(<変数名>:<型>...) -> <戻り値の型>

関数の宣言例:

>>> def f(a :int, b :int) -> int :
...   return a+b
... 
>>> f(10,20)
30

型ヒントなので、別の型を入れても動作してしまいます。例えば、上の例で文字列を入れても問題なく動いてしまいます。

型チェックをしたい場合は、VSCodeなどのエディタでプラグインを導入すると良いです。

>>> def f(a :int, b :int) -> int :
...   return a+b
... 
>>> f("test", "1234")
'test1234'

関数(戻り値が複数の場合)

関数の戻り値が複数の場合は、タプル(tuple)を使います。

具体的には、以下のようなコードになります

def f(a:int, b:int) -> tuple[int, int]:
  return a+b, a-b

print(f(10,20))
# (30, -10)

関数(引数、戻り値が任意の型)

変数の型を「任意」にしたい場合にはAnyを使います。

Anytypingライブラリをインポートすることで使うことができます。

from typing import Any

def f(a:Any, b:Any) -> Any:
  return a+b

print(f(10,20))
# (30, -10)
print(f("a","b"))
# ab

独自の型をつける

独自の型を作成し、独自の型を指定することも可能です。

この場合は、typingライブラリのNewTypeを使って以下のようにします。

以下のコードでは、MyIntという型をNewTypeを使って作成し、型指定に利用しています。

from typing import NewType

MyInt = NewType('MyInt', int)

def f(x:MyInt) :
    if x == 0: print("zero")


f(0)
# zero

numpyなどの型指定

numpyなどのライブラリの型も指定することが可能です。

numpyなどの型指定は以下のようにして行います。

>>> import numpy as np
>>> x:np.array = np.array([1,2,3,4])
>>> x
array([1, 2, 3, 4])
>>> type(x)
<class 'numpy.ndarray'>

nptypingというライブラリを使う方法もあります。そちらを使う方法もあります。

まとめ

以上、Pythonで型ヒントをつける方法について解説しました。

型を明示的に指定しなくてよいので、ついつい型を指定せずに記述してしまいますが、特に複数人で共同作業する場合や、再利用するコードを書く場合には型宣言をやっておいた方が可読性があがりますので良いと思います。

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

記事URLをコピーしました