Python 中的动态类型

2024 年 8 月 29 日 | 阅读 3 分钟

在本教程中,我们将理解 Python 中的动态类型是什么。

每当我们用 Python 编写程序时,我们都会遇到一组不同的语句,其中之一是赋值语句,我们在其中用一个值初始化一个变量。

让我们看看 Python 中的赋值是如何不同的。

当我们谈论 C、C++ 和 Java 等语言时,内存是根据变量的数据类型分配的,并相应地访问,而 Python 是一种动态类型语言,它将值存储在某个位置,然后将相应的变量名与一个容器组合起来。

数据类型是在运行时确定的。

考虑下面的程序-

输出

<class 'float'>
<class 'int'>
<class 'str'>
36.0
72
datadatadata

说明

让我们看看这个程序的解释-

  1. 在第一步中,我们用不同的类型初始化了变量 a、b 和 c。
  2. 之后,我们检查了它们的类型,分别是 float、integer 和 string。
  3. 在下一步中,它们都乘以三。
  4. 由于数据类型在运行时已知,操作是基于类型执行的。
  5. 我们可以观察到输出中的第一个值是浮点值,下一个值是整数,字符串被重复了三次。
  6. 执行程序后,会显示预期的输出。

对象、变量和引用的关系。

当我们为 Python 中的变量赋值时,会发生以下一系列步骤-

  1. 我们在内存中创建一个包含值的对象。
  2. 如果变量名尚不存在,我们可以创建它。
  3. 将引用分配给变量的对象。

考虑下面的程序-

输出

<class 'float'>
<class 'int'>
<class 'str'>
<class 'complex'>

说明

让我们看看上面程序中发生了什么。

  1. 我们已经用不同数据类型的值初始化了变量 'a'。
  2. 之后,我们检查了每种情况下的 'a' 的类型。
  3. 由此,我们可以推断-
    1. 在第一种情况下,a 是浮点对象的引用。
    2. 在第二种情况下,a 是整数对象的引用。
    3. 在第三种情况下,a 是字符串对象的引用。
    4. 在第四种情况下,a 是复数对象的引用。

共享引用

在开始之前,让我们看一下程序-

输出

12.0
12.0

说明

是时候弄清楚这里到底发生了什么了-

  1. 我们将 a 的值初始化为 12.0,将 b 初始化为 a
  2. 之后,我们打印了 ab 的值,它们都等于 12.0

这正是共享引用的概念,它说“两个变量可以具有相同的引用。”

再举一个例子会让它更清楚。

输出

84.0
12.0

说明

让我们看看这个程序的解释-

  1. 我们将 a 的值初始化为 12.0,将 b 初始化为 a,然后再次将 'a' 赋值为 a * 7
  2. 之后,我们打印了 ab 的值,a 的值为 84.0,而 b 的值为 12.0,因为它仍然引用 a 的第一个值。

动态类型语言的缺点

使 Java 等语言更方便的特性是它是静态类型的,因此错误和异常在编译时而不是运行时报告。

因此,Python 开发人员担心错误在运行时显示,因此他们必须制定策略来纠正它们。

结论

总结本教程,我们可以说 Python 是一种动态类型语言,在这里我们理解了在处理它时可以观察到的独特特征。


下一主题Python 中的 Fabs