Python 语义和状态
Python semantics and state
我正在为 Python 编写一些形式语义。希望一些 Python 大师可以帮助我。当程序执行通过语句列表向下移动时,它遇到的每个赋值语句(或表达式),它会根据 context.But 推断类型,然后它是否将这种类型存储在某个地方(这样下次遇到它可以检查存储并检查类型),还是执行操作,然后丢弃类型,然后在下次遇到变量时再次推断类型?
这是 Python 3+ 顺便说一句
(希望我已经说清楚了)
Python 使用动态类型。类型是值的一部分。无论值在哪里,它的类型都会随之而来。 (您可以使用 type()
函数获得对应于该类型的独立值。)只有当整个值都被丢弃时,值的类型才会被丢弃。一个变量只是对一个值的引用:每个变量只引用一个值,通常它可以是任何可能的值,没有类型限制。
例如,在
a = 2
Python 不会使 a
成为 int
变量; 2
是类型 int
。 a
只是对 2
的引用,恰好是一个整数。当你再写
b = a + 3
Python 通过简单地获取 a
引用的值,然后获取它的类型来获取 a
的类型。计算表达式并将结果存储在 b
.
中
从静态类型语言的角度来看,就好像 Python 中的每个变量都具有相同的类型 value,因此每个变量都有一个值。
有关静态和动态类型的详细信息,请参阅 this other question。
我正在为 Python 编写一些形式语义。希望一些 Python 大师可以帮助我。当程序执行通过语句列表向下移动时,它遇到的每个赋值语句(或表达式),它会根据 context.But 推断类型,然后它是否将这种类型存储在某个地方(这样下次遇到它可以检查存储并检查类型),还是执行操作,然后丢弃类型,然后在下次遇到变量时再次推断类型? 这是 Python 3+ 顺便说一句 (希望我已经说清楚了)
Python 使用动态类型。类型是值的一部分。无论值在哪里,它的类型都会随之而来。 (您可以使用 type()
函数获得对应于该类型的独立值。)只有当整个值都被丢弃时,值的类型才会被丢弃。一个变量只是对一个值的引用:每个变量只引用一个值,通常它可以是任何可能的值,没有类型限制。
例如,在
a = 2
Python 不会使 a
成为 int
变量; 2
是类型 int
。 a
只是对 2
的引用,恰好是一个整数。当你再写
b = a + 3
Python 通过简单地获取 a
引用的值,然后获取它的类型来获取 a
的类型。计算表达式并将结果存储在 b
.
从静态类型语言的角度来看,就好像 Python 中的每个变量都具有相同的类型 value,因此每个变量都有一个值。
有关静态和动态类型的详细信息,请参阅 this other question。