2016-08-02 17 views
3

Mypyは署名を推論するために何もしないようです。あれは正しいですか?私はこれを行うときMypy:署名の推論はありませんか?

# types.py 
def same_int(x: int) -> int: 
    return x 

def f(x): 
    y = same_int(x) 

    # This would be "Unsupported operand types for + ("int" and "str")" 
    # y + "hi" 

    return y 

f("hi") 
f(1) + "hi" 

苦情:たとえば

mypy --check-untyped-defs types.py 

を(--check-untyped-defsがオンになっている場合)Mypyはfの本体内の式についての推論を行います。私はそれを使って署名についての推論を作成して適用することが理にかなっているのだろうかと思っています。

答えて

3

これは慎重な設計上の決定です - mypyは、主に大規模で多様なコードベースの移行を容易にするために、動的で型付きのコードを混在させるために設計されています。両方の利益を得る。

結果として、型名のない関数は、デフォルトでは動的型付き関数として扱われ、暗黙的に与えられたパラメータ型と戻り値型はAnyです。

関連する問題