Python 语义和状态

Python semantics and state

我正在为 Python 编写一些形式语义。希望一些 Python 大师可以帮助我。当程序执行通过语句列表向下移动时,它遇到的每个赋值语句(或表达式),它会根据 context.But 推断类型,然后它是否将这种类型存储在某个地方(这样下次遇到它可以检查存储并检查类型),还是执行操作,然后丢弃类型,然后在下次遇到变量时再次推断类型? 这是 Python 3+ 顺便说一句 (希望我已经说清楚了)

Python 使用动态类型。类型是值的一部分。无论值在哪里,它的类型都会随之而来。 (您可以使用 type() 函数获得对应于该类型的独立值。)只有当整个值都被丢弃时,值的类型才会被丢弃。一个变量只是对一个值的引用:每个变量只引用一个值,通常它可以是任何可能的值,没有类型限制。

例如,在

a = 2

Python 不会使 a 成为 int 变量; 2 是类型 inta 只是对 2 的引用,恰好是一个整数。当你再写

b = a + 3

Python 通过简单地获取 a 引用的值,然后获取它的类型来获取 a 的类型。计算表达式并将结果存储在 b.

从静态类型语言的角度来看,就好像 Python 中的每个变量都具有相同的类型 value,因此每个变量都有一个值。

有关静态和动态类型的详细信息,请参阅 this other question