我想在我当前的Python 3.5项目中使用类型提示。我的函数应该接收一个函数作为参数
如何在我的类型提示中指定类型函数?
导入键入
def my_函数(名称:typing.AnyStr,func:typing.function)——>;无:
#但是,键入.Function不存在。
#如何为参数“func”指定类型函数?
#做一些处理
通过
我检查了PEP 483,但在那里找不到函数类型提示
正如@jornsharpe在评论中指出的,这可以通过键入来完成。可调用:
输入import AnyStr,可调用
def my_函数(名称:AnyStr,func:Callable)->;无:
问题是,Callable本身被翻译成Callable[…,Any],这意味着:
可调用函数接受任意数量/类型的参数,并返回任意类型的值。在大多数情况下,这不是您想要的,因为您将允许传递几乎任何函数。您还需要提示函数参数和返回类型
这就是为什么类型中的许多类型被重载以支持表示这些额外类型的子脚本。例如,如果有一个函数sum,它取两个ints并返回一个int:
定义总和(a:int,b:int)>;int:返回a+b
您对它的注释是:
可调用[[int,int],int]
也就是说,这些参数在外部订阅中是子脚本,返回类型是外部订阅中的第二个元素。一般而言:
可调用[[ParamType1,ParamType2,…,ParamTypeN],ReturnType]