use*_*349 3 python static-typing type-annotation
这是一个最小的情况。
def foo(x:int, y:int) -> tuple:
return (x*y, y//2)
Run Code Online (Sandbox Code Playgroud)
能够编写-> tuple(:int, :int)无效格式的格式非常诱人。在这种情况下是否有正确的方法,还是在python沿着类型注释之路进一步移动之前它仍然是灰色区域?
编辑:显然有可能做类似的事情
def bar(x, y) -> ((str, int), (str, int)):
return ("%s+%s" %(x,y), x+y), ("%s-%s" %(x,y), x-y)
Run Code Online (Sandbox Code Playgroud)
现在有一种方法可以注释这种情况:
from typing import Tuple
def foo(x:int, y:int) -> Tuple[int, int]:
return (x*y, y//2)
Run Code Online (Sandbox Code Playgroud)
注意:python运行时不会抱怨-> (int, int),但是根据PEP 484而言,它不是正确的类型注释。换句话说,如果您要使用类型提示来创建自己的微型语言,则可以使用它;但python输入标准(PEP 484)不接受。
typing.Tuple从 Python 3.9 开始已弃用。您应该使用内置tuple类型(无需导入):
def foo(x:int, y:int) -> tuple[int, int]:
return (x*y, y//2)
Run Code Online (Sandbox Code Playgroud)