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

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

然而,当我用两个或更多参数编写注释时,我的PyCharm会给我SyntaxError: invalid syntax.

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

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

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

请在回复中加入政治公众人物链接(如有).我在PEP 484PEP 3107处寻找答案,但没有找到.

推荐答案

使用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语句收集成一个单独的值.

Python-3.x相关问答推荐

需要使用regex匹配字符串的帮助,直到最后一次出现开闭括号,开闭括号中的值是可选的

将列表转换为 pandas 数据框,其中列表包含字典

Python VS Code 自动导入路径包含 src

Pandas groupby 然后 for each 组添加新行

将数据框中的值与另一个数据框中的多列进行比较,以获取条目以有效方式匹配的列表列表

如何使用 django rest 框架在 self forienkey 中删除多达 n 种类型的数据?

如果值超出上下限(异常值处理),则将值的数据框替换为 np.nan

在python中将字符串写入文本文件

如何在 on_ready 事件中使用 change_presence? (discord.py)

pip 找不到最新的软件包版本

Pandas 将列格式化为货币

例外:使用 Pyinstaller 时找不到 PyQt5 插件目录,尽管 PyQt5 甚至没有被使用

Django 2 个字段之一不能为空

python3:字节与字节数组,并转换为字符串和从字符串转换

在两个数据框之间查找相等的列

Python3 mysqlclient-1.3.6(又名 PyMySQL)的用法?

sys.stdin.readline() 读取时没有提示,返回 'nothing in between'

如何配置 Atom 以运行 Python3 脚本?

无 Python 错误/错误?

没有名为urlparse的模块,但我没有使用 urlparse