For example:
def foo(bar: int = None):
pass
When I check a type/annotation of bar
pycharm
A previous version of the standard, as defined in PEP 484 allowed for this.
However, the most up to date version states the following in the Union section:
A past version of this PEP allowed type checkers to assume an optional type when the default value is None, as in this code:
def handle_employee(e: Employee = None): ...
This would have been treated as equivalent to:
def handle_employee(e: Optional[Employee] = None) -> None: ...
This is no longer the recommended behavior. Type checkers should move towards requiring the optional type to be made explicit.
I'm glad about this. To my eyes, it actually looks jarring.