动态类型语言(即Python)在运行时执行类型检查,因此变量或参数可以引用任何类型的值。 语言定义是否要求输入变量和参数? 修改语言以使变量和参数具有类型是否有意义?
答案 0 :(得分:1)
除非@ jon-Skeet等人优雅地保存,否则这个问题可能会被关闭。
直到那时,我相信任何来自强类型编程背景的人都会争论至少指定输入的选项。但是在一天结束时,该语言的创建者/修饰符不喜欢打字的要求,以至于没有付出任何努力来允许指定类型的可能性。因此,即使它可能具有真正意义,我也不会指望它发生。
根据我的简短研究,似乎python不允许指定类型。但您可以使用isinstance http://docs.python.org/library/functions.html#isinstance
检查类型现在作为个人意见,我说为什么不呢。如果相关语言的维护者/创建者能够以不影响效率/语言实际意图的方式进行,他们至少应该允许有兴趣的人添加指定类型的能力。
答案 1 :(得分:0)
您可以混合静态和动态类型;有很多语言可以做到这一点。
在最简单的情况下,您将拥有一个类层次结构,其中包含以object
为根的所有类型(使用Python术语)。每个“无类型”变量都有object
类型,因此它可以保存任何变量。其他变量可能具有更具体的类型,例如int
。
实现仍然需要执行运行时类型检查,但它可以优化掉在编译时可以确定类型的检查。
Cython做了类似的事情,除了它将静态类型部分卸载到C编译器:
def foo():
cdef int i = 0 # statically typed variable
ham = "spam" # dynamically typed variable
while i < 10:
print(ham)
i += 1