动态类型语言(即 Python)在运行时执行类型检查,因此变量或参数可以引用任何类型的值。语言定义是否要求不键入变量和参数?修改语言以使变量和参数具有类型是否有意义?
问问题
82 次
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 回答