Python:类型注释,如何定义元组的元素?

标签 python static-typing type-annotation

这是一个最小的例子。

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) 

最佳答案

现在有一种方法可以注释这种情况:

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) 接受。

关于Python:类型注释,如何定义元组的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28242081/

相关文章:

python - WTForms 等同于 <input type ="time">

python - Numpy 数组是否可哈希?

javascript - 如何确保对象符合 Typescript 接口(interface)?

mypy - 短路 `or` 的窄类型,当我有两种可能的情况时

python - Tweepy StreamListener : Tweet when a specified account Tweets

python - np.array 的 np.array 的深拷贝

javascript - typescript 问题 - 澄清几点

java - Java 风格的 Groovy 和 Java 一样快吗?

python-3.x - Bytes-like object 或 Buffer 类型注解

java - @EnsuresNonNullIf 注释给出 "conditional postcondition not satisfied"-警告