我想在Python中使用类型提示,但是在某些情况下我的参数类型对我来说并不明确...函数是否具有类型,或者它们是特例。我想做以下事情:
伪代码:
def run_function(function_to_run: fn):
function_to_run(data)
这可能吗?如果是这样,我应该使用哪种类型?
编辑: 我本来希望将函数与其他可调用对象(例如类)区分开来……但这也许无关紧要,而且过于谨慎。
答案 0 :(得分:3)
如文档中所述:您可以使用Callable
。
例如,您可以通过以下方式使用它:
from typing import Callable
def run_function(function_to_run: Callable[[int], str]):
function_to_run(data)
如果function_to_run
是从int
到str
的函数。
答案 1 :(得分:2)
typing.Callable应该可以正常工作。您实际上并不关心它具体是一个函数,它可以是类或某种可调用实例。
答案 2 :(得分:2)
虽然您几乎可以肯定不关心各种可调用类型之间的区别,但是可以根据需要强制实施c
模块为不同类型的函数提供了许多特定的名称(其中一些您可以甚至可能不会想到不同的类型)。仅举几例:
types
和types.FunctionType
(同一基础类型的别名)types.LambdaType
和types.BuiltinMethodType
types.BuiltinFunctionType
types.MethodWrapperType