假设我有以下这个函数:
Assume I have a function like this:
def foo(*args):
for x in args:
print(x)
假设我想说args
的所有元素都是int
类型,那么根据PEP 0484,正确的表达方式是什么?我应该这样做:
from typing import Tuple
def foo(*args: Tuple[int, ...]) -> None:
for x in args:
print(x)
或者类似于某物
def foo(*args: int) -> None:
for x in args:
print(x)
还是完全不同的事情?
特别是,我正在尝试在PyCharm中有效地使用类型提示,但我想到的解决方案似乎都不能帮助PyCharm了解x
应该是一个int
。
Tuple[int, ..]
,而*args: int
则总是错误的,因为 Python 会为*args
创建一个包含多余位置参数值的元组。 - Dimitris Fasarakis Hilliard*args
和**kwargs
在 PEP 0484 中被特殊处理,正如现在已经接受的答案所述。 - llf