J'essaie d'écrire un :rtype:
tapez un conseil pour une fonction de générateur. Quel est le type retourné?
Par exemple, disons que j'ai ces fonctions qui produisent des chaînes:
def read_text_file(fn):
"""
Yields the lines of the text file one by one.
:param fn: Path of text file to read.
:type fn: str
:rtype: ???????????????? <======================= what goes here?
"""
with open(fn, 'rt') as text_file:
for line in text_file:
yield line
Le type de retour n'est pas seulement une chaîne, c'est une sorte de chaîne itérable? Je ne peux donc pas simplement écrire :rtype: str
. Quel est le bon indice?
Generator[str, None, None]
ou Iterator[str]
Le type générique d'annotation des générateurs est Generator[yield_type, send_type, return_type]
fourni par le module typing
:
def echo_round() -> Generator[int, float, str]:
res = yield
while res:
res = yield round(res)
return 'OK'
Vous pouvez également utiliser Iterable[YieldType]
ou Iterator[YieldType]
.