如果我的类型是函数,可以在Python中使用什么类型提示?

时间:2019-04-22 17:38:36

标签: python python-3.x types

我想在Python中使用类型提示,但是在某些情况下我的参数类型对我来说并不明确...函数是否具有类型,或者它们是特例。我想做以下事情:

伪代码:

def run_function(function_to_run: fn):
  function_to_run(data)

这可能吗?如果是这样,我应该使用哪种类型?

编辑: 我本来希望将函数与其他可调用对象(例如类)区分开来……但这也许无关紧要,而且过于谨慎。

3 个答案:

答案 0 :(得分:3)

如文档中所述:您可以使用Callable

例如,您可以通过以下方式使用它:

from typing import Callable

def run_function(function_to_run: Callable[[int], str]):
    function_to_run(data)

如果function_to_run是从intstr的函数。

答案 1 :(得分:2)

typing.Callable应该可以正常工作。您实际上并不关心它具体是一个函数,它可以是类或某种可调用实例。

答案 2 :(得分:2)

虽然您几乎可以肯定不关心各种可调用类型之间的区别,但是可以根据需要强制实施c模块为不同类型的函数提供了许多特定的名称(其中一些您可以甚至可能不会想到不同的类型)。仅举几例:

  • typestypes.FunctionType(同一基础类型的别名)
  • types.LambdaTypetypes.BuiltinMethodType
  • types.BuiltinFunctionType
  • types.MethodWrapperType