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
但Z与从g(x)
所以这是一个str
。有没有什么产品可以做类似的事情?
我的理解是PyPy确实有点像这样,但通常人们不会尝试去Python Python,他们只是使用严格类型的语言。另外,Python中的“编译时”实际上并不存在。您可以进行静态或动态代码分析,并且可以将pyc转换为编译,但是在基本级别上,任意代码可以在运行时更改有关系统的任何内容。 –