pythonで無効な入力を明示的にチェックする方法を最良に(そしてどの程度まで)実装するべきかアドバイスが必要です。強力なタイプ設定を持つC++のバックグラウンドから来ていますが、これはいつも私のために混乱しています。Pythonで無効な型をチェックする
def m(start:float, up:float, down:float):
pass
今すぐ他の2つは、私が何かを行うことができます0より大きくなければなりませんしながら、0以上でなければならない起動:
ので、議論のために私たちは、以下のメソッドシグネチャを持っていると仮定しましょう以下のような:
def m(start:float, up:float=1, down:float=1):
if start <= 0.0:
raise ValueError("Error")
if up< 0.0:
raise ValueError("Error")
if down< 0.0:
raise ValueError("Error")
私はこれがある限り、入力型がfloatまたはfloat型に匹敵するいくつかの数値型であるとして罰金になります推測しています。しかし、Pythonでは、関数を呼び出すのを止めるものは何もありません。
m(start=[], up="Hello", down={})
これらの比較は意味がありません。この状況に対処するための無限の方法は何ですか?
呼び出し元が契約に違反しているため、スクリプトがうまくいかないようにします。 –
Pythonの入力が一般的になっています:) https://docs.python.org/3/library/typing.html Pythonの新しいrelで新しく変更されています。 3.4,3.5,3.5.1 ... あなたは何ですか? –
Pythonは 'TypeError'を送出します。あなたのユーザーが開発者の場合は、最後にドキュメントを読むでしょう。そうでない場合は、コードのどこかに横たわっている恐ろしいバグがあります。それはあなたのせいではありません。 – gboffi