有没有办法用 Python (3.5+) 类型提示声明函数对象的签名?具体来说,有没有办法声明一个函数可以接受什么类型的函数对象或者一个变量可以引用什么类型的函数对象。
我敢肯定它会变得非常混乱(例如 C++11 lambda 类型),但是至少有一些方法可以检查函数类型吗?
例如:
def func1(x: int) -> int:
return x
def func2(x: int, y: int) -> int:
return x + y
# 'TwoArgFn' is a 'function type' that accepts two ints and returns an int
def takes_two(f: TwoArgFn) -> int:
return f(123, 456)
将 func1
作为参数传递给 takes_two
应该是一个错误,而传递 func2
是好的。
原文由 patmanpato 发布,翻译遵循 CC BY-SA 4.0 许可协议
为此,请使用
typing.Callable
类型(参见 此处):Callable
的第一个参数是函数参数的类型列表,而第二个参数是返回类型。当然,python 本身根本不检查类型。为此,您应该使用其他工具,例如 mypy