Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 具有两个或多个返回参数的函数注释_Python_Python 3.x_Type Hinting - Fatal编程技术网

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

Python 具有两个或多个返回参数的函数注释,python,python-3.x,type-hinting,Python,Python 3.x,Type Hinting,当我为返回一个参数的函数编写注释时,我没有问题 def func() -> str: return "ok" 但是,当我使用两个或多个参数编写注释时,PyCharm会给出SyntaxError:invalid syntax def func() -> str, str: return "ok - 1", "ok - 2" 我认为参数可以与元组组合,但我认为这不是最好的方法 我的问题是:如何用两个或多个返回参数正确地注释函数 请在您的回复中包含政治公众人物链接(如有

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

def func() -> str:
    return "ok"
但是,当我使用两个或多个参数编写注释时,PyCharm会给出
SyntaxError:invalid syntax

def func() -> str, str:
    return "ok - 1", "ok - 2"
我认为参数可以与
元组组合,但我认为这不是最好的方法

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


请在您的回复中包含政治公众人物链接(如有)。我在上查找答案,但没有找到。

使用
键入。Tuple

from typing import Tuple

def func() -> Tuple[str, str]:
    return 'a', 'b'
这是合适的,因为从概念上讲,您实际上返回了一个包含这些值的
元组。注:

print(type(func()))
输出:

<class 'tuple'>


除了空的
元组
()
),这意味着
'a',b'
被创建为
元组
,而不是由
return
语句收集成一个单独的值。

元组
是合理的。它可能太严格了,但据我所知,如果没有不同的权衡,没有更好的选择。@kojiro在我看来,这不适用于返回值的情况…?我认为它仍然适用。签名的主要内容不是函数本身返回一个元组,而是返回一个具有特定长度的可解压文件。有很多序列类型是可解包的,但是没有一个泛型的可解包类型也有长度和内部类型说明符。Tuple可以指定所有内容,但太严格了。@kojiro我可能误解了您的意思,但具有多个返回值的函数不是专门返回
Tuple
,而具有单个返回值的函数恰好是一个知道其长度和元素类型的可解包对象,哪一个需要这样的说明符呢?元组仍然是一个碰巧是可解压的单个对象。我就是这么说的。没有一种方法可以表示python从函数返回多个值,因为python不能从函数返回多个值。但是它可以返回一个序列,而元组是一种序列。应该注意的是,第二个
func
相当于
tmp=('ok-1','ok-2')
返回tmp
,这使得它需要元组的原因很明显