Search code examples
pythonpython-typing

How to annotate a generator in Python 3?


Python 3.x supports (optional) function annotations:

def add_ints(x: int, y: int) -> int:
    return x + y

I sometimes encounter problems as to how to represent a given "type", and this time, I have a function that returns a generator:

def myfunc(x: [int]) -> "generator that returns ints":
    #                     ^~~~~~~~~~~~~~~~~~~~~~~~~~
    return (n for n in x if n % 2 == 0)

How should I annotate the return value? Is there any reference I can consult?


Solution

  • The typing module defines the Generator type, which you can use like:

    Generator[yield_type, send_type, return_type] 
    

    See also PEP 0484.