Python не проверяет типы во время компиляции, потому что он не может, по крайней мере, в некоторых случаях. Но кто-нибудь придумал механизм для проверки типа компиляции, основанный на дополнительных аннотациях пользователя? Что-то вроде pylint, который автор использует дополнительные гарантии? Я имею в виду что-то вроде:Проверка типа времени компиляции Python
#guarantee(argument=int, return_type=int)
def f(x):
return x + 3
#guarantee(argument=int, return_type=str)
def g(x):
return "%d times" % x
y = f(6)
# works, z = "9 times"
z = g(y)
# error
a = f(z)
Эта шашка будет интерпретировать комментарии выше каждой функции, понимают, что f(x)
только должен принять int
но г приходит из g(x)
так это str
. Есть ли какой-нибудь продукт, который делает что-то похожее на это?
Мое понимание PyPy действительно похоже на это, но, как правило, люди не пытаются использовать не-Python Python, они просто используют строго типизированный язык. Кроме того, в Python в действительности нет такой вещи, как «время компиляции». Вы можете иметь статический или динамический анализ кода, а преобразование в pyc можно рассматривать как компиляцию, но на фундаментальном уровне произвольный код может изменить что-либо о системе во время выполнения. –