gca*_*ali 7 python types pycharm python-3.x typehints
假设我有这样的函数:
def foo(*args):
for x in args:
print(x)
Run Code Online (Sandbox Code Playgroud)
而且我想说我想说的所有元素args都是int; 从PEP 0484开始表达它的正确方法是什么?我应该做点什么吗
from typing import Tuple
def foo(*args: Tuple[int, ...]) -> None:
for x in args:
print(x)
Run Code Online (Sandbox Code Playgroud)
或类似的东西
def foo(*args: int) -> None:
for x in args:
print(x)
Run Code Online (Sandbox Code Playgroud)
或完全不同的东西?
特别是,我试图在PyCharm中有效地使用类型提示,而我所想到的解决方案似乎都没有帮助PyCharm理解x应该是一个int.
根据PEP-484:
任意参数列表也可以进行类型注释,以便定义:
Run Code Online (Sandbox Code Playgroud)def foo(*args: str, **kwds: int): ...是可以接受的,这意味着,例如,以下所有内容都表示具有有效参数类型的函数调用:
Run Code Online (Sandbox Code Playgroud)foo('a', 'b', 'c') foo(x=1, y=2) foo('', z=0)在函数体中
foo,变量的类型args推导为Tuple[str, ...],变量的类型kwds为Dict[str, int]。
foo从您的示例中注释函数的正确方法是:
def foo(*args: int) -> None:
for x in args:
print(x)
Run Code Online (Sandbox Code Playgroud)
在 Python 2 中:
def foo(*args):
# type: (*int) -> None
for x in args:
print(x)
Run Code Online (Sandbox Code Playgroud)