2013-05-07 97 views
0

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

+0

您原来的问题已关闭。你需要做的不是轻微的措词改变,而是再次提问。 – Abizern 2013-05-07 15:37:41

+0

多种语言可以做到这一点:渐进式输入,动态类型语言的类型推断,契约,你的名字。 – 2013-05-07 15:42:28

+1

提问的方式有什么问题? – akonsu 2013-05-07 15:47:26

回答

1

这个问题可能会得到关闭,除非有人像@乔恩 - 碟摆好保存。直到那时,我相信任何来自强类型编程背景的人都会争论至少指定打字的选项。但是在这一天结束时,语言的创建者/修饰者不喜欢足够的输入要求,所以不会付出任何努力来允许指定类型的可能性。所以即使它真的很有意义,我也不会指望它发生。

从我简短的研究,它显示python不允许指定类型。但你可以使用isinstance检查类型http://docs.python.org/library/functions.html#isinstance

现在作为个人意见的问题,我说为什么不。如果相关语言的维护者/创建者可以以不影响效率/语言实际意图的方式进行操作,那么他们至少应该允许有兴趣的人添加指定类型的能力来执行此操作。

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