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

如果我的类型是函数,我可以在Python中使用什么类型提示?,python,python-3.x,types,Python,Python 3.x,Types,我想在Python中使用类型提示,但在某些情况下,我不清楚参数的类型。。。函数是否有类型,或者它们是特殊情况。我想做如下工作: 伪代码: def run_function(function_to_run: fn): function_to_run(data) 这可能吗?如果是,我应该使用什么类型 编辑: 我希望将函数与其他可调用函数(如类)区分开来。。。但也许这并不重要,而且过于谨慎。应该可以。实际上,您并不关心它是否是一个函数,它可以是一个类或某种类型的可调用实例。如文档中所述:您可以使

我想在Python中使用类型提示,但在某些情况下,我不清楚参数的类型。。。函数是否有类型,或者它们是特殊情况。我想做如下工作:

伪代码:

def run_function(function_to_run: fn):
  function_to_run(data)
这可能吗?如果是,我应该使用什么类型

编辑:
我希望将函数与其他可调用函数(如类)区分开来。。。但也许这并不重要,而且过于谨慎。

应该可以。实际上,您并不关心它是否是一个函数,它可以是一个类或某种类型的可调用实例。

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

例如,您可以这样使用它:

from typing import Callable

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

如果
function\u to\u run
是一个从
int
str
的函数,而您几乎肯定不关心各种可调用类型之间的区别,那么如果您希望
types
模块为不同类型的函数提供许多特定的名称,您可以强制执行此操作(其中一些你甚至不认为是不同的类型)。举几个例子:

  • types.FunctionType
    types.LambdaType
    (相同基础类型的别名)
  • types.BuiltinMethodType
    types.BuiltinFunctionType
  • types.MethodWrapperType
  • types.MethodDescriptorType

在下面的答案之上,您可以看到一个。内置函数和用户定义函数之间已经存在类型级别的区别,您几乎肯定不关心这些区别。您考虑过哪些用例应该排除可调用对象(例如类,也称为
类型的实例
)?这是我试图自己回答的问题。我想我可能不在乎区别,只是我更喜欢更明确的类型。我可能只需要尝试Callable,看看是否遇到问题。