猿问

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

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

伪代码:

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

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

编辑:我希望将函数与其他可调用对象(例如类)区分开来......但这可能并不重要并且过于谨慎。


LEATH
浏览 158回答 3
3回答

慕的地10843

如文档中所述:您可以使用Callable.例如,您可以这样使用它:from typing import Callabledef run_function(function_to_run: Callable[[int], str]):    function_to_run(data)iffunction_to_run是从int到的函数str。

30秒到达战场

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

侃侃尔雅

虽然您几乎可以肯定不关心各种可调用类型之间的区别,但如果您愿意,您可以强制执行该types模块为不同类型的函数提供了相当多的特定名称(其中一些您甚至可能不认为是不同的)类型)。仅举几个:types.FunctionType和types.LambdaType(相同基础类型的别名)types.BuiltinMethodType 和 types.BuiltinFunctionTypetypes.MethodWrapperTypetypes.MethodDescriptorType
随时随地看视频慕课网APP

相关分类

Python
我要回答