私はPythonにはかなり新しく、Python3の型ヒント機能を発見して喜んでいました。私はPEP 484を読んで、this question on SOを見つけました。質問をした人が、なぜ関数の戻り値の型がチェックされていないのか不思議でした。回答者はPEP 484のセクションに、実行時にチェックが行われないこと、および外部ヒントが解析されることを意図していることを指摘しました。タイプヒントは関数の引数については適合しますが、戻り値の型は適合しません
私はのpython3のREPLを解雇し、これまでのところ
>>> def greeting() -> str: return 1
>>> greeting()
1
とても良い、これを試してみることにしました。
>>> def greeting2(name: str) -> str: return 'hi ' + name
>>> greeting2(2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in greeting2
TypeError: Can't convert 'int' object to str implicitly
それは、少なくとも関数のパラメータに関しては、そこにチェックしていると、のように思えるので、車輪が外れているように見えるところ今これは次のとおりです。私はこれを試してみましたので、私は、関数のパラメータについての好奇心です。私の質問は、なぜ戻り値の型ではなくパラメータをチェックするのですか?
これはタイプチェックではありません。タイプヒントなしでこのエラーが発生します。 Pythonは強く型付けされた言語です。 –
文字列ではなく整数で 'greeting2'を呼び出すことができるので、関数のパラメータの型をチェックしません。 –