ИЗМЕНИТЬ
Согласно ответу @Jim Fasarakis Hilliard, я понимаю, что это не ошибка, а ожидаемое поведение. Итак, я хотел бы добавить к вопросу - могу ли я каким-то образом заставить mypy
s --strict-optional
-подобную функциональность в проверке типов PyCharm
?
После просмотра пары видео о проверке типов в Python 3.5+
и Pycharm
я подумал, что это должно быть помечено как неправильный возвращаемый тип:
from typing import Optional, List
import random
def r() -> Optional[List[int]]:
if random.choice([0, 1]):
return [1, 2, 3]
return None
def f() -> List[int]:
return r()
Функция f()
может возвращать либо list
из int
s, либо None
, что указано явно, но PyCharm
не помечает return r()
как неверный результат.
def f() -> List[int]:
return None
Например, если функция f()
выглядит так, как показано выше, PyCharm
обнаруживает неправильный тип return
.
Это баг или нужно было изменить какие-то настройки? Я увеличил серьезность проверки типов до error
.