Python是静态类型的吗?

时间:2012-06-04 22:39:42

标签: python

我知道Python是动态类型,鸭子类型,也很强大。在某些情况下,为了使用它们,我们必须确保它事先声明为列表或字典...所以我可以说Python也是静态类型语言吗?

2 个答案:

答案 0 :(得分:8)

不,Python不是静态类型的。

在静态类型中,名称既与类型又对象(或值)绑定,在Python名称中只绑定到对象。您可以随时将名称重新分配给不同类型的对象,这是静态类型语言无法做到的。

我不确定你需要事先声明你的变量是什么意思,但我的猜测是你实际上只是创建一个空列表或字典并将其分配给一个名字。

答案 1 :(得分:0)

考虑这行代码:

x = [] # (or {})

在使用之前,您不是“将变量声明为列表(或字典)”。您正在创建一个列表([])(或dict {}),然后将其指定为变量(x)的值。这并不意味着x现在有一个类型。您可以稍后将字符串分配给x

x = 'a string'

并且Python对此没有任何问题。

我想知道你是否被另一种语言的功能所迷惑,例如Perl的自动修复功能,它让你将未初始化的标量变量看作是对列表或哈希的引用。您是否认为Python不那么“动态”,因为它缺乏这样的功能?如果您实际上正在寻找这样的东西,请查看集合模块中的defaultdict类。