繁体   English   中英

我怎样才能注释f(* params)?

[英]How can I annotate f(*params)?

我无法弄清楚如何正确地注释这段代码:

from typing import Iterable

def f(*params: Iterable) -> str:
    return ":".join(params)

我知道Iterable是不正确的,因为mypy告诉我:

error: Argument 1 to "join" of "str" has incompatible type Tuple[Iterable[Any], ...]; expected Iterable[str]

......但我不明白为什么。

当注释与*args -style参数列表组合时,注释指定了预期每个参数的类型。 PEP 484所述

任意参数列表也可以是类型注释,以便定义:

 def foo(*args: str, **kwds: int): ... 

是可接受的,这意味着,例如,以下所有代表使用有效类型的参数的函数调用:

 foo('a', 'b', 'c') foo(x=1, y=2) foo('', z=0) 

在函数foo的主体中,变量args的类型推导为Tuple[str, ...] ,变量kwds的类型是Dict[str, int]

在您的示例中,由于params应该是字符串的元组,因此正确的注释是str

def f(*params: str) -> str:
    return ":".join(params)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM