我碰到过一些链接,说 Python 是一种强类型语言。
然而,我认为在强类型语言中你不能这样做:
bob = 1 bob = "bob"
我认为强类型语言不接受运行时类型更改。也许我对强/弱类型的定义是错误的(或过于简单)。
那么,Python 是强类型语言还是弱类型语言?
您遇到的困惑很常见,因为术语“强类型”和“弱类型”可以根据上下文以不同的方式解释。让我们澄清一下这些术语的一般含义以及它们如何应用于 Python。
Python 是强类型的,但是也是动态类型的。
TypeError
# This will raise a TypeError result = 1 + "1"
这里,bob首先分配一个整数,然后分配一个字符串。这是可能的,因为 Python 是动态类型的。
bob
Python 是强类型的,因为它在运行时强制执行类型规则,并且不会在不兼容的操作之间隐式转换类型。但是,它也是动态类型的,这意味着变量类型是灵活的并且在运行时确定,允许您在执行期间将变量重新分配给其他类型。
因此,虽然您最初对强类型的理解可能与静态类型(类型在运行时不会改变)联系过于紧密,但在 Python 中,强类型是指强制执行类型规则而不进行自动转换,而不是变量类型的不变性。