返回 lambda 的函数的类型注释

     2023-04-18     117

关键词:

【中文标题】返回 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表达式的函数【英文标题】:Functionreturningalambdaexpression【发布时间】:2011-06-1105:42:05【问题描述】:我想知道是否可以在C++11中编写一个返回lambda函数的函数。当然,一个问题是如何声明这样的函数。每个lambda都有一... 查看详情

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

】未指定lambda函数的返回类型时的段错误【英文标题】:Segfaultwhennotspecifyingreturntypeoflambdafunction【发布时间】:2019-06-1816:04:40【问题描述】:我有这个示例代码://Copyright2019GoogleLLC.//SPDX-License-Identifier:Apache-2.0#include<functional>... 查看详情

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

】lambda表达式中的返回类型,Reduce函数【英文标题】:Returntypeinlambdaexpression,Reducefunction【发布时间】:2021-01-3118:52:42【问题描述】:在静态方法中我实现了内部类:classInnerimplementsComparable<Inner>Integerv;Strings;publicInner(Integera,St... 查看详情

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

】一个lambda的返回类型可以通过返回值来推断,那么为啥不能是一个函数呢?【英文标题】:Alambda\'sreturntypecanbededucedbythereturnvalue,sowhycan\'tafunction\'s?一个lambda的返回类型可以通过返回值来推断,那么为什么不能是一个函数呢?... 查看详情

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

】从用mypy注释的python函数返回None,多种返回类型【英文标题】:ReturnNonefrompythonfunctionannotatedwithmypy,multiplereturntypes【发布时间】:2019-02-1506:26:36【问题描述】:我来自Typescript背景。我正在将静态类型检查引入我正在处理的python... 查看详情

如何注释返回类型取决于其参数的函数?

】如何注释返回类型取决于其参数的函数?【英文标题】:HowdoIannotateafunctionwhosereturntypedependsonitsargument?【发布时间】:2021-10-1501:38:49【问题描述】:在Python中,我经常编写过滤集合以查找特定子类型实例的函数。例如,我可能... 查看详情

c++lambda表达式(函数指针和function)

...,内部创建了一个重载()操作符的类。捕获变量列表->返回值类型(函数主体),lambda可以隐士返回,也就是返回值类型可以不用显示写出来。c++和c#不一样,想在闭包里面使用外部变量,就必须先在捕获变量列表里面定义。有下... 查看详情

kotlin进阶系列-函数类型及函数字面值

...是示例。lambda表达式的全语法形式如下:其特点如下:其返回值是x-yKotlin有一个约定:如果函数的最后一个参数是函数,那么作为相应参数传入的lambda表达式可以放在圆括号之外。示例如下:以lambda表达式作为参数的高阶函数如... 查看详情

如何通过一系列 lambdas 传递数据,其中参数类型是根据前一个 lambda 的返回类型推断的?

...系列lambdas传递数据,其中参数类型是根据前一个lambda的返回类型推断的?【英文标题】:HowcanIpassdatathroughachainoflambdaswheretheparametertypeisinferredbasedonthereturntypeofthepreviouslambda?【发布时间】:2021-09-1608:10:49【问题描述】:我正在尝... 查看详情

kotlinkotlin函数总结(具名函数|匿名函数|lambda表达式|闭包|内联函数|函数引用)(代码片段)

...默认参数值2、具名参数三、Unit函数四、TODO函数抛出异常返回Nothing类型五、反引号函数名六、匿名函数七、匿名函数的函数类型八、匿名函数的隐式返回九、匿名函数参数十、匿名函数it关键字十一、匿名函数变量类型推断十二... 查看详情

强制执行显式函数返回类型注释?

】强制执行显式函数返回类型注释?【英文标题】:Enforceexplicitfunctionreturntypeannotations?【发布时间】:2019-06-1415:49:26【问题描述】:我想禁用在typescript中使用“any”的功能。比如我有如下函数func()returntrue我想要求它是这样的func... 查看详情

主题2:基本语法

...以是代码块;表达式:   表达式会被执行然后返回执行结果;如果表达式没有执行结果,则表示接口类型的方法没有返回类型。使用表达式作为函数体时,就不需要额外的分号表示结束了。如果目标类型的方法没有返... 查看详情

lambda表达式

...数对象参数](操作符重载函数参数)mutable或exception声明->返回值类型函数体 可以看到,Lambda主要分为五个部分:[函数对象参数]、(操作符重载函数参数)、mutable或exception声明、->返回值类型、函数体.2.Lambda语法分析 2.1[函数... 查看详情

lambda管中窥豹

...的一种方式:它没有名称,但它有参数列表、函数主体、返回类型,可能该有一个可以抛出的异常列表。这个定义够大的让我们慢慢道来。匿名——我们说的匿名,是因为它不像普通方法那样有一个明确的名称:写得少而想得多... 查看详情

131.lambda表达式小结(代码片段)

...数对象参数](操作符重载函数参数)mutable或exception声明->返回值类型函数体可以看到,Lambda主要分为五个部分:[函数对象参数]、(操作符重载函数参数)、mutable或exception声明、->返回值类型、函数体。下面分别进行介绍。一、[... 查看详情

kotlin返回与跳转

...的函数可以被嵌套。标签限制的return允许我们从外层函数返回。最重要的一个用途就是从lambda表达式中返回。回想一下我们这么写的时候:这个return表达式从最直接包围它的函数即foo中返回。(注意,这种非局部的返回只支持传... 查看详情

AWS AppSync Lambda 解析器获取查询返回类型

】AWSAppSyncLambda解析器获取查询返回类型【英文标题】:AWSAppSyncLambdaResolverGetQueryReturnType【发布时间】:2021-04-2115:40:30【问题描述】:在AWSAppSync中,我有一个Lambda解析器。解析器处理多个查询,例如getUser、getUsers、getClient等。Lamb... 查看详情

c++11lambda表达式精讲

...capture是捕获列表,params是参数表,opt是函数选项,ret是返回值类型,body是函数体。因此,一个完整的lambda表达式看起来像这样:autof=[](inta)->intreturna+1;;std::cout<<f(1)<<std::endl;//输出:2可以看到,上面通过一行代码定义了... 查看详情