字符串是否可以作为Callable类型中的int接受?

时间:2015-12-13 17:11:00

标签: python typing

我想知道我是否误解了Callable的用法。

def func(f1:int, f2:int, s:str) -> bool:
    return isinstance(f2, int)

def func2(fn:Callable[[int, int, str], bool]):
    print(fn(42.42, '42.42', 'hello mum'))  # Incorrectly passed?

func2(func)

我希望我的PyCharm IDE将print语句行标记为类型失败,因为它提供了(float,str,str)而不是required(int,int,str)。它没。 但是,在以下代码中,func的{​​{1}}被标记为类型错误。

func2(func)

1 个答案:

答案 0 :(得分:2)

这似乎是PyCharm的错误或缺少功能。如果您使用mypy,则可以正确获得预期的类型错误:

test.py: note: In function "func2":
test.py:7: error: Argument 1 has incompatible type "float"; expected "int"
test.py:7: error: Argument 2 has incompatible type "str"; expected "int"