Python 动态类型

Python 动态类型

Python语言的一个显著特点是它是一种动态类型的语言。与基于编译器的语言C/C++、Java等静态类型语言不同。让我们来理解静态类型和动态类型之间的区别。

在静态类型语言中,每个变量及其数据类型必须在赋值之前声明。编译器不接受任何其他类型的值,会引发编译时错误。

让我们来看下面这段Java程序片段 –

public class MyClass {
   public static void main(String args[]) {
      int var;
      var="Hello";

      System.out.println("Value of var = " + var);
   }
}

在这里, var 被声明为一个整数变量。当我们尝试给它赋予一个字符串值时,编译器给出以下错误信息 –

/MyClass.java:4: error: incompatible types: String cannot be converted to int
   x="Hello";
     ^
1 error

在Python中,变量只是指向内存中存储的对象的标签或引用,并不是一个命名的内存位置。因此,不需要提前声明类型。因为它只是一个标签,它可以放在另一个对象上,这个对象可以是任意类型。

在Java中,变量的类型决定它可以存储什么和不能存储什么。在Python中则相反。这里,数据(即对象)的类型决定了变量的类型。首先,让我们在变量中存储一个字符串并检查其类型。

>>> var="Hello"
>>> print ("id of var is ", id(var))
id of var is 2822590451184
>>> print ("type of var is ", type(var))
type of var is <class 'str'>

所以, var 是字符串类型。然而,它并不是永久绑定的。它只是一个标签;可以被赋值给任何其他类型的对象,比如浮点数,这将使用不同的id()存储 –

>>> var=25.50
>>> print ("id of var is ", id(var))
id of var is 2822589562256
>>> print ("type of var is ", type(var))
type of var is <class 'float'>

或者一个元组。变量标签现在指向另一个对象。

>>> var=(10,20,30)
>>> print ("id of var is ", id(var))
id of var is 2822592028992
>>> print ("type of var is ", type(var))
type of var is <class 'tuple'>

我们可以看到, var 的类型在引用新对象时每次都会改变。这就是为什么Python是一种动态类型语言。

Python的动态类型特性使其比C/C++和Java更灵活。然而,它容易出现运行时错误,所以程序员必须小心。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程