最近、型ヒントについて調べていて、いくつかの理論を読んだ後、簡単な例を試してみました。
def myfun(num1: int, num2: int) -> int:
return str(num1) + num2
a = myfun(1, 'abc')
print(a)
# output -> 1abc
num1
ここでは、num2
int 型を定義しており、値を文字列として渡した後でもnum2
エラーが生成されていないことがわかります。
また、関数はint
型の値を返すことを期待する必要がありますが、文字列型の値を返すことについては文句を言いません。
ここで何が間違っているのか誰か説明してもらえますか?
ベストアンサー1
それはタイプと呼ばれるほのめかす理由があります:あなたはヒントIDEやコードを読む他の人に変数がどうあるべきかについて知らせる。実行時には、型ヒントは実際には何の意味も持たない。他の開発者によるドキュメント作成や使いやすさのために存在する。型ヒントに反すると、Pythonは停止(自分が何をしているのかわかっていると想定されますが)それはあまり良い習慣ではありません。
これは、Java のような静的に型付けされた言語とは異なることに注意してください。Java では、関数の定義と互換性のない引数を渡そうとするとコンパイル時エラーが発生し、異なる型だが互換性のある引数を渡すと (たとえば、float
を期待する関数に を渡すint
)、自動的に型キャストされます。
TypeError
プログラマーが を想定どおりに使用すると、指定したコードで が発生することに注意してください。int
これは、 を に連結できないstr
ためです。IDE またはリンターはこれを認識し、その行で警告を出すことができます。これは、型ヒントに基づいて行われます。型ヒントは、IDE とドキュメントの動作を通知し、関数を意図した方法で使用していない可能性があるという警告を出すためのものであり、実行時に何かを行うものではありません。