如何在我的类型提示中指定函数类型?

新手上路,请多包涵

如何将变量的类型提示指定为 _函数类型_?没有 typing.Function ,我在相关的 PEP PEP 483 中找不到任何内容。

原文由 Jon 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 600
2 个回答

正如 @jonrsharpe 在评论中指出的那样,这可以通过 typing.Callable 来完成:

 from typing import Callable

def my_function(func: Callable):

注意: Callable 本身等同于 Callable[..., Any] 。这样的 Callable 接受 任意 数量和类型的参数( ... )并返回 任意 类型的值( Any )。如果这太不受约束,还可以指定输入参数列表的类型和返回类型。

例如,给定:

 def sum(a: int, b: int) -> int: return a+b

对应的注解是:

 Callable[[int, int], int]

也就是说,参数在外部订阅中被下标,返回类型作为外部订阅中的第二个元素。一般来说:

 Callable[[ParamType1, ParamType2, .., ParamTypeN], ReturnType]

原文由 Dimitris Fasarakis Hilliard 发布,翻译遵循 CC BY-SA 4.0 许可协议

另一个需要注意的有趣点是,您可以使用内置函数 type() 获取内置函数的类型并使用它。所以你可以

def f(my_function: type(abs)) -> int:
    return my_function(100)

或者那种形式的东西

原文由 Hallsville3 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题