当我为返回一个参数的函数编写注释时,我没有任何问题。
def func() -> str:
return "ok"
但是,当我编写带有两个或更多参数的注释时,我的 PyCharm 给我
SyntaxError: invalid syntax
def func() -> str, str:
return "ok - 1", "ok - 2"
我认为参数可以与
tuple
结合使用,但我认为这不是最好的方法。
我的问题是:如何正确注释具有两个或多个返回参数的函数?
请包含一个您的回复中的 PEP 链接(如果有)。我在 PEP 484 和 PEP 3107 寻找答案,但找不到。
当函数返回多个值时,应该使用括号来创建一个元组,用于注释返回类型:
def func() -> tuple[str, str]:
return "ok - 1", "ok - 2"
这很清楚地表明该函数返回一个有两个元素的元组,这两个元素都是字符串。虽然 Python 函数在技术上返回多个值时确实返回了一个元组,但使用显式的元组注释可以提高代码清晰度,并帮助类型检查器理解函数的预期输出。
此方法在 PEP 484 - 类型提示 中有描述:https://www.python.org/dev/peps/pep-0484/#tuples-and-lists
虽然也可以返回一个没有括号的普通元组,如
-> str, str
,但这在 PEP 中不推荐这样做,并可能导致类型检查器出现意外问题。使用
tuple[str, str]
语法可以确保与类型提示的最佳兼容性和清晰度。