Например:
Код: Выделить всё
def foo(bar=None):
bar = [] if bar is None else bar
return sorted(bar)
Код: Выделить всё
def foo(bar: Optional[List[int]]=None):
bar = [] if bar is None else bar
return sorted(bar) # bar cannot be `None` here
Код: Выделить всё
def foo(bar: Optional[List[int]]=None):
bar = [] if bar is None else bar
bar = cast(List[int], bar) # make it explicit that `bar` cannot be `None`
return sorted(bar)
Как лучше всего с этим справиться?
РЕДАКТИРОВАТЬ:
Чтобы уточнить, пользователь этой функции должна иметь возможность вызывать foo как foo() и foo(None) и foo(bar=None). (Я не думаю, что имеет смысл делать это по-другому.)
РЕДАКТИРОВАНИЕ №2:
Mypy будет работать без ошибок, если вы никогда не вводите bar как Необязательный и вместо этого введите его только как List[int], несмотря на то, что значение по умолчанию — None. Однако это крайне не рекомендуется, поскольку такое поведение может измениться в будущем, а также неявно типизирует параметр как необязательный. (Подробнее см. здесь.)
Подробнее здесь: https://stackoverflow.com/questions/678 ... -arguments
Мобильная версия