1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Python] 型ヒント ~ヒントと言ったがあれは嘘だ!ハッハッハッ~

Last updated at Posted at 2023-03-01

Pytonの型ヒントについて

Pythonでは変数宣言時に型宣言をしなくても動作します。

古いPythonは変数の型を明示的に記載する術はなかったかと思いますが、Python3.5よりPythonにも変数の「型ヒント」というものがつけられるようになりました!

型ヒントの使い方

以下のような通常の変数宣言に対し、

通常の変数宣言
a = 100

Pythonの型ヒントは以下のようにつけられます。

型ヒント付き変数宣言
a: int = 100

変数名の後ろに: 型をつけるだけです!
簡単ですね!!!

型ヒントの問題点

Pythonでも型ヒントのおかげで、変数の型がわかるようになりました!
めでたしめでたし👏👏
と思えます。

ですが、世の中それほど甘くはないようです…。

以下をご覧ください。

問題のコード
a: int = "I'm an integer."
print(a, type(a))
# I'm an integer. <class 'str'>

上記のコードはエラーを吐かずに実行されます。
a: intとaをint型で型ヒントをつけたにもかかわらず、str型の値を代入できています。しんじられなーい…です。

同様に型ヒントをつけていても違う型の値が代入された瞬間に違う型になってしまいます。

問題のコード2
a: int = 100
b: str = "bbbbb"
print(a, type(a))
# 100 <class 'int'>
a = b
print(a, type(a))
# bbbbb <class 'str'>

まとめ

  • Pythonの型ヒントはその名の通り所詮ヒントでしかありません。
  • 型ヒントと違う型が代入されてもエラーを吐いたり教えてくれたりはしません。
  • 違う型が代入された場合は混乱のもとでしかない。
  • 結局はコードを書く側がしっかりと型を意識しておく必要がある。

<参考>型ヒント通りに代入されているかを確認したい(違う場合は教えてほしい)場合

mypyというコード上の型を性的解析してくれるライブラリを使って確認することができます。
以下のページを見れば雰囲気はわかるかと思います。
mypyについては検索すると多くの情報が出てくるので興味があれば検索してみてください。

参考リンク

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?