Я заметил, что python 3.5 и python 3.6 добавили множество функций по проверке статического типа, поэтому я попытался использовать следующий код (в версии python 3.6, стабильная версия).
from typing import List
a: List[str] = []
a.append('a')
a.append(1)
print(a)
Что меня удивило, так это то, что python не дал мне ошибку или предупреждение, хотя 1
был добавлен к list
, который должен содержать только строки. Pycharm
обнаружил ошибку типа и предупредил об этом, но это было не очевидно и не было показано в выходной консоли, я боялся, что иногда я мог бы пропустить это. Мне бы хотелось получить следующие эффекты:
- Если очевидно, что я использовал неправильный тип, как показано выше, выкиньте предупреждение или ошибку.
- Если компилятор не смог надежно проверить, правильно ли я использовал тип, который я использовал, игнорируйте его.
Это возможно? Может быть, mypy
может это сделать, но я бы предпочел использовать проверку типа типа python-3.6 (например, a: List[str]
) вместо стиля комментария (например, # type List[str]
), используемого в mypy
. И мне любопытно, есть ли переключатель на родном языке python 3.6 для достижения двух пунктов, которые я сказал выше.