Ric*_*sen 45 python type-hinting python-3.x python-3.5
如何使用类型提示来注释返回一个Iterable总是产生两个值的函数:a bool和a str?提示Tuple[bool, str]很接近,除了它将返回值类型限制为元组,而不是生成器或其他类型的可迭代.
我很好奇,因为我想注释一个foo()用于返回多个值的函数,如下所示:
always_a_bool, always_a_str = foo()
Run Code Online (Sandbox Code Playgroud)
通常函数喜欢foo()做这样的事情return a, b(它返回一个元组),但我喜欢的类型暗示有足够的灵活性,以取代发电机或列表或别的东西返回的元组.
Mar*_*ers 57
你总是返回一个物体; 使用return one, two简单地返回一个元组.
所以,是的,-> Tuple[bool, str]完全正确.
只有该Tuple类型允许您指定固定数量的元素,每个元素都具有不同的类型.如果函数产生固定数量的返回值,尤其是当这些值是特定的不同类型时,您确实应该返回一个元组.
对于可变数量的元素,期望其他序列类型具有一种类型规范,因此typing.Sequence这里不适合.另请参阅列表和元组之间的区别是什么?
元组是异构数据结构(即,它们的条目具有不同的含义),而列表是同构序列.元组有结构,列表有顺序.
Python的类型提示系统遵循该原理,目前没有语法来指定固定长度的可迭代并且在特定位置包含特定类型.
如果必须指定任何iterable都可以,那么您可以做的最好的事情是:
-> Iterable[Union[bool, str]]
Run Code Online (Sandbox Code Playgroud)
此时,调用者可以按任何顺序和未知长度(0到无穷大之间的任何位置)预期布尔值和字符串.
| 归档时间: |
|
| 查看次数: |
19374 次 |
| 最近记录: |