假设我们希望对一个函数进行类型提示,该函数接受一个位置参数和任意数量的其他参数,例如:
def foo(a: int, *args: Any) -> None:
for arg in args:
print(a, isinstance(arg, int))
我们还有另一个函数,它接收 foo
作为参数,因此我们想知道如何将 foo
的类型提示为它本身。将其写成 Callable[[int, Any], None]
是否正确?我感到困惑,因为内部方括号中的类型(即[int, Any]
)必须与 foo
的参数数量相同--是否必须这样?--但是,显然,*args
可以是任意数量的参数。
def foo(x, y): return x - y
。使用动态类型,只有在实际调用函数时才会发现foo("x", "y")
是一个错误。如果你使用def foo(x: int, y: int): return x - y
进行提示,则静态类型检查器可以比实际运行代码更有效地标记它为错误。 - chepnerfoo
?你的类型提示难道不是一个不必要的限制吗? - habrewning