How do I add default parameters to functions when using type hinting? How do I add default parameters to functions when using type hinting? python python

How do I add default parameters to functions when using type hinting?


Your second way is correct.

def foo(opts: dict = {}):    passprint(foo.__annotations__)

this outputs

{'opts': <class 'dict'>}

It's true that's it's not listed in PEP 484, but type hints are an application of function annotations, which are documented in PEP 3107. The syntax section makes it clear that keyword arguments works with function annotations in this way.

I strongly advise against using mutable keyword arguments. More information here.


If you're using typing (introduced in Python 3.5) you can use typing.Optional, where Optional[X] is equivalent to Union[X, None]. It is used to signal that the explicit value of None is allowed . From typing.Optional:

def foo(arg: Optional[int] = None) -> None:    ...


I recently saw this one-liner:

def foo(name: str, opts: dict=None) -> str:    opts = {} if not opts else opts    pass