gpt4 book ai didi

python - 如何创建返回列表包含字符串的类型提示?

转载 作者:IT老高 更新时间:2023-10-28 21:12:25 25 4
gpt4 key购买 nike

我想在我的 Python 程序中使用类型提示。如何为像

这样的复杂数据结构创建类型提示
  • 字符串列表
  • 一个返回整数的生成器?

示例

def names() -> list:
# I would like to specify that the list contains strings?
return ['Amelie', 'John', 'Carmen']

def numbers():
# Which type should I specify for `numbers()`?
for num in range(100):
yield num

最佳答案

使用 typing module ;它包含泛型,您可以使用类型对象来指定对其内容有约束的容器:

import typing

def names() -> typing.List[str]: # list object with strings
return ['Amelie', 'John', 'Carmen']

def numbers() -> typing.Iterator[int]: # iterator yielding integers
for num in range(100):
yield num

根据您设计代码的方式以及您希望如何使用 names() 的返回值,您还可以使用 types.Sequencetypes.MutableSequence在此处输入类型,具体取决于您是否希望能够改变结果。

生成器是 iterator 的特定类型,因此 typing.Iterator 在这里是合适的。如果您的生成器也接受 send() 值并使用 return 设置 StopIteration 值,则可以使用 typing.Generator object太:

def filtered_numbers(filter) -> typing.Generator[int, int, float]:
# contrived generator that filters numbers; returns percentage filtered.
# first send a limit!
matched = 0
limit = yield
yield # one more yield to pause after sending
for num in range(limit):
if filter(num):
yield num
matched += 1
return (matched / limit) * 100

如果您不熟悉类型提示,那么 PEP 483 – The Theory of Type Hints可能会有帮助。

关于python - 如何创建返回列表包含字符串的类型提示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37386499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com