0

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

4

2 回答 2

1

这个问题可能会被关闭,除非像@jon-Skeet 这样的人优雅地保存。

到那时,我相信任何来自强类型编程背景的人都会争论至少指定类型的选项。但归根结底,该语言的创建者/修改者不喜欢打字的要求,以至于没有付出任何努力来允许指定类型的可能性。所以我不会指望它发生,即使它可能真的很有意义。

根据我的简短研究,python 似乎不允许指定类型。但是您可以使用 isinstance http://docs.python.org/library/functions.html#isinstance检查类型

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

于 2013-05-07T15:40:04.110 回答
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
于 2013-05-07T15:39:01.597 回答