我想知道我是否误解了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)
答案 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"