具有两个或多个返回参数的函数注释

     2023-03-13     192

关键词:

【中文标题】具有两个或多个返回参数的函数注释【英文标题】:Function annotation with two or more return parameters 【发布时间】:2019-09-24 15:24:39 【问题描述】:

当我为返回一个参数的函数编写注释时,我没有问题。

def func() -> str:
    return "ok"

但是,当我编写带有两个或更多参数的注释时,我的 PyCharm 给了我SyntaxError: invalid syntax

def func() -> str, str:
    return "ok - 1", "ok - 2"

我认为参数可以与tuple 组合,但我认为这不是最好的方法。

我的问题是:如何正确地注释具有两个或多个返回参数的函数?

请在您的回复中包含 PEP 链接(如果有)。我在PEP 484 和PEP 3107 寻找答案,但找不到。

【问题讨论】:

应该注意的是,第二个func 等价于tmp = ('ok - 1', 'ok - 2') return tmp,这使得它为什么需要元组立即显而易见。 python.org/dev/peps/pep-3107/#parameters How to annotate types of multiple return values?的可能重复 【参考方案1】:

使用typing.Tuple:

from typing import Tuple

def func() -> Tuple[str, str]:
    return 'a', 'b'

这是合适的,因为从概念上讲,您实际上是返回一个包含这些值的 tuple。注意:

print(type(func()))

输出:

<class 'tuple'>

除了空的tuple (()),parentheses are not necessary to define a tuple,这意味着'a', 'b' 被创建为tuple,而不是被return 语句收集到一个单独的值。

【讨论】:

Tuple 是合理的。 in some cases 可能过于严格,但据我所知,如果没有不同的权衡,没有更好的选择。 @kojiro 在我看来,这不适用于返回值...? 我认为它仍然适用。签名的主要内容不是函数本身返回一个元组,而是它返回一个具有特定长度的 unpackable。有很多序列类型是不可打包的,但没有通用的不可打包类型也有长度和内部类型说明符。元组可以指定所有内容,但过于严格。 @kojiro 我可能会误会你,但是具有多个返回值的函数特别地返回tuple,而不是具有单个返回值的函数值也恰好是一个知道其长度和元素类型的不可打包对象,需要这样的说明符吗? 元组仍然是一个碰巧不可打包的对象。这就是我要说的。没有办法表示 python 从函数返回多个值,因为 python 不能从函数返回多个值。但它可以返回一个序列,元组是一种序列。

返回具有多个输入参数的函数的值以在同一类中具有多个参数的另一个函数中使用?

】返回具有多个输入参数的函数的值以在同一类中具有多个参数的另一个函数中使用?【英文标题】:ReturningthevalueofafunctionwithmultipleinputparameterstouseinanotherfunctionwithmultipleparametersinsidethesameClass?【发布时间】:2018-10-2823:31:00【问... 查看详情

用于显示具有两个或多个相同参数的记录的 MySql 查询

】用于显示具有两个或多个相同参数的记录的MySql查询【英文标题】:MySqlqueryforshowingrecordsthathavetwoormoresameparameters【发布时间】:2013-12-1107:50:27【问题描述】:我有一张桌子:#tabelbarangkdgudang|kdbarang|stok|g01a0112g01a0225g02a015g01a037我... 查看详情

从具有多个参数C#的PageMethods返回值后不调用成功函数

】从具有多个参数C#的PageMethods返回值后不调用成功函数【英文标题】:NotCallingSuccessFunctionAfterReturningValuesfromPageMethodsWithMultipleParametersC#【发布时间】:2021-11-2921:27:12【问题描述】:我正在尝试调用我的OnSuccess函数,但它没有在... 查看详情

使用 PyQt5“更新”从具有多个参数的函数中销毁返回值 [关闭]

】使用PyQt5“更新”从具有多个参数的函数中销毁返回值[关闭]【英文标题】:DestroyareturnvaluefromafunctionwithmultipleargumentsusingPyQt5"Updated"[closed]【发布时间】:2019-04-0422:09:14【问题描述】:这是S.N提出的代码,感谢他,使用... 查看详情

具有多个参数的函数

】具有多个参数的函数【英文标题】:functionwithmultiplearguments【发布时间】:2010-04-0112:08:13【问题描述】:如何在Objective-C中的单个函数中传递多个参数?我想传递2个整数值,返回值也是整数。我想使用新的Objective-C语法,而不... 查看详情

如何一次创建一个具有两个或多个构造函数初始化的对象

】如何一次创建一个具有两个或多个构造函数初始化的对象【英文标题】:Howtocreateoneobjectwithtwoormoreconstructorinitializationatonce【发布时间】:2019-10-2502:05:22【问题描述】:我们,不更改所有重载构造函数和其他现有代码?(或者... 查看详情

如何从 Matlab 调用具有多个输出的 C++ 函数?

】如何从Matlab调用具有多个输出的C++函数?【英文标题】:HowtocallC++functionwithmultipleoutputsfromMatlab?【发布时间】:2012-04-2610:02:27【问题描述】:我有一个C++DLL,我使用calllib从Matlab代码中调用它。我可以轻松调用只有输入参数的C++... 查看详情

具有一个或多个(多个)参数的搜索表单

】具有一个或多个(多个)参数的搜索表单【英文标题】:SearchFormwithOneorMore(Multiple)Parameters【发布时间】:2015-05-0816:51:43【问题描述】:我已经掌握了基础知识,创建了两个文件,一个是用户输入搜索参数的搜索表单,另一个... 查看详情

swift中具有多个参数的函数

】swift中具有多个参数的函数【英文标题】:Functionwithmultipleparametersinswift【发布时间】:2019-01-1611:19:07【问题描述】:我需要定义并调用一个名为areaOfRectangle的函数,它接受两个Int参数length和width,并打印length*width的结果。我实... 查看详情

具有多个参数的 MultiProcess 函数

】具有多个参数的MultiProcess函数【英文标题】:MultiProcessfunctionwithmultiplearguments【发布时间】:2020-08-2902:29:07【问题描述】:我正在深入研究python中的多处理世界。看了一些视频后,由于我的职能性质,我想出了一个问题。这个... 查看详情

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

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

具有多个同名参数的函数如何工作?

】具有多个同名参数的函数如何工作?【英文标题】:Howdofunctionswithmultipleparametersofthesamenamework?【发布时间】:2019-08-1406:34:57【问题描述】:我一直在查看Flash游戏的代码(link)。但是,我无法理解其中一些函数是如何工作的,尤... 查看详情

在并行模式下运行具有多个参数的r函数(代码片段)

我有这个功能function1<-function(df1,df2,int1,int2,char1)...return(newDataFrame)它有5个输入:前2个是数据帧,然后我有两个整数和一个字符串。该函数返回一个新的数据框。到目前为止,我依次运行此函数8次:newDataFrame1<-function1(df1,df2,1,... 查看详情

具有多个参数的 PySpark UDF 返回 null

】具有多个参数的PySparkUDF返回null【英文标题】:PySparkUDFwithmultipleargumentsreturnsnull【发布时间】:2018-09-2604:04:41【问题描述】:我有一个PySpark数据框,它有两列(A、B,其类型为double),其值为0.0或1.0。我正在尝试添加一个新列... 查看详情

mysql函数之字符串函数(代码片段)

...数:以字节和字符获取字符串的长度3.left:返回具有指定长度的字符串的左边部分4.right:回具有指定长度的字符串的右边部分5.replace:搜索并替换字符串中的子字符串。6.substring:从具有特定长度的位置开始... 查看详情

javascriptconcat()方法-连接两个或多个数组

一,定义和用法concat()方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。语法arrayObject.concat(arrayX,arrayX,......,arrayX) 参数描述arrayX必需。该参数可以是具体的值,也可以是数组... 查看详情

从 PostgreSQL 函数返回具有特定参数的表

】从PostgreSQL函数返回具有特定参数的表【英文标题】:ReturningtablewithspecificparametersfromaPostgreSQLfunction【发布时间】:2020-04-0621:08:41【问题描述】:我有这个函数,我想用它返回一个包含两列的表:game_name和follow(这将是一个整数... 查看详情

devicenet和can有啥不同

...*把结果返回主调函数*/上面例中程序的功能是由用户输入两个整数,程序执行后输出其中较大的数。本程序由两个函数组成,主函数和max函数。函数之间是并列关系。可从主函数中调用其它函数。max函数的功能是比较两个数,然... 查看详情