返回 lambda 的函数的类型注释

Posted

技术标签:

【中文标题】返回 lambda 的函数的类型注释【英文标题】:Type annotation for function returning a lambda 【发布时间】:2018-12-15 22:11:33 【问题描述】:

我非常喜欢在 Python 中使用类型注释的想法。我知道如何在这个简单的例子中这样做:

def foo(bar : int, lol : int) -> int:
     return bar*lol

但是当我的函数要返回一个 lambda 时,我不知道该怎么做:

def line(slope : float, b : float) -> lambda:
     return lambda x: slope*x + b

这个例子产生了一个错误,我想知道我应该为这个返回类型使用什么关键字。

也许这看起来没那么有用,但我想保持我的代码一致注释并且无法使用这些类型的函数这样做真的很困扰我。

提前致谢。

【问题讨论】:

好吧,解释器从来没有真正检查过这些,但我的尝试是无效的语法。你提出的建议很好,对我来说很有意义。请将其发布为答案,以便我接受。谢谢。 【参考方案1】:

您可以使用Callable 输入提示返回:

from typing import Callable

def line(slope: float, b : float) -> Callable[[float], float]:
     return lambda x: slope*x + b

【讨论】:

以上是关于返回 lambda 的函数的类型注释的主要内容,如果未能解决你的问题,请参考以下文章

一个 lambda 的返回类型可以通过返回值来推断,那么为啥不能是一个函数呢?

lambda 表达式中的返回类型,Reduce 函数

返回 lambda 表达式的函数

未指定 lambda 函数的返回类型时的段错误

匿名函数(lambda)

从用mypy注释的python函数返回None,多种返回类型