动态类型语言中的类型

时间:2013-05-07 15:33:48

标签: types dynamic-typing

动态类型语言(即Python)在运行时执行类型检查,因此变量或参数可以引用任何类型的值。 语言定义是否要求输入变量和参数? 修改语言以使变量和参数具有类型是否有意义?

2 个答案:

答案 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