这是一个极小的案例。
def foo(x:int, y:int) -> tuple:
return (x*y, y//2)
能够编写不是有效格式的-> 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)
答案 0 :(得分:7)
现在有一种方法可以注释这种情况:
from typing import Tuple
def foo(x:int, y:int) -> Tuple[int, int]:
return (x*y, y//2)
注意:python运行时不会抱怨-> (int, int)
,但根据PEP 484,它不是正确的类型注释。换句话说,如果你想创建一个迷你版,你可以使用它 - 为您自己的目的使用类型提示的语言;但python输入标准(PEP 484)不接受它。
答案 1 :(得分:1)
不,还没有规范的方法来做到这一点。 Python类型注释是该语言的一个相对较新的补充,因此它们仍然有限。
目前,您可以使用元组文字:
def foo(x:int, y:int) -> (int, int):
return (x*y, y//2)
那,或者是字符串文字,例如:
def foo(x:int, y:int) -> 'tuple(int, int)':
return (x*y, y//2)
这两个都很清楚地传达了你的意图。