2016-08-02 77 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 

Mypy將使推理有關的f體內表達式(如果--check-untyped-defs已開啓)。我想知道使用它來製作和應用關於簽名的推論是否合理。 (如果沒有,爲什麼不),

回答

3

這是一個深思熟慮的設計決策 - mypy的設計目的是允許您將動態代碼和類型代碼混合在一起,主要是爲了更容易地轉換大量不同的代碼庫+允許您選擇獲得兩者的好處。

因此,沒有類型註釋的函數默認被視爲動態類型函數,並且隱式給出參數和返回類型Any

相關問題