Python中的TypeHinting元组

Asa*_*ara 9 python type-hinting

当我想在Python中键入一个元组时,如:

def func(var: tuple[int, int]):
    # do something

func((1, 2))    # would be fine
func((1, 2, 3)) # would throw an error
Run Code Online (Sandbox Code Playgroud)

需要提供元组中的确切项目数.这与列表类型提示不同:

def func(var: list[int]):
    # do something

func([1])       # would be fine
func([1, 2])    # would also be fine
func([1, 2, 3]) # would also be fine
Run Code Online (Sandbox Code Playgroud)

在某种程度上,这是因为元组的类型.因为它们的设计不会被更改,所以您必须对其中的项目进行硬编码.

所以我的问题是,有没有办法让元组类型提示中的项目数量变得灵活?我试过类似的东西,但它不起作用:

def func(var: tuple[*int]):
Run Code Online (Sandbox Code Playgroud)

aar*_*ron 25

是的,您可以使元组类型提示中的项目数量灵活:

from typing import Tuple

def func(var: Tuple[int, ...]):
    pass
Run Code Online (Sandbox Code Playgroud)

来自文档:https://docs.python.org/3/library/typing.html#typing.Tuple

要指定同类型的可变长度元组,请使用文字省略号,例如Tuple[int, ...].平原Tuple相当于Tuple[Any, ...],反过来tuple.

  • Pyhthon 中已经包含了“typing”(https://docs.python.org/3/library/typing.html),因此不需要额外的包 (11认同)

小智 5

PEP 585开始,可以在不导入typing模块的情况下使用内置类型。例如

def func(var: tuple[int]):
    pass
Run Code Online (Sandbox Code Playgroud)