Một trong những điểm nổi bật features of Python language là nó là một ngôn ngữ kiểu động. Các ngôn ngữ dựa trên trình biên dịch như C/C++, Java, v.v. là kiểu tĩnh. Hãy cùng tìm hiểu sự khác biệt giữa kiểu tĩnh và kiểu động.
Trong một ngôn ngữ kiểu tĩnh, mỗi biến và kiểu dữ liệu của nó phải được khai báo trước khi gán giá trị cho nó. Bất kỳ kiểu giá trị nào khác đều không được chấp nhận bởi trình biên dịch và sẽ gây ra lỗi biên dịch.
Hãy xem xét đoạn mã sau của một chương trình Java −
public class MyClass { public static void main(String args[]) { int var; var="Hello"; System.out.println("Value of var = " + var); } }
Ở đây, var được khai báo là một biến kiểu số nguyên. Khi chúng ta cố gắng gán cho nó một giá trị chuỗi, trình biên dịch sẽ đưa ra thông báo lỗi sau:
/MyClass.java:4: error: incompatible types: String cannot be converted to int x="Hello"; ^ 1 error
Một variable in Python chỉ là một nhãn, hoặc tham chiếu đến đối tượng được lưu trữ trong bộ nhớ, và không phải là một vị trí bộ nhớ có tên. Do đó, việc khai báo kiểu trước đó là không cần thiết. Bởi vì nó chỉ là một nhãn, nó có thể được gán cho một đối tượng khác, có thể thuộc bất kỳ kiểu nào.
Trong Java , kiểu của biến quyết định những gì nó có thể lưu trữ và những gì không. Trong Python , thì ngược lại. Ở đây, type of data (tức là đối tượng) quyết định kiểu của biến. Để bắt đầu, hãy lưu một chuỗi vào biến và kiểm tra kiểu của nó.
>>> 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'>
Vậy, var là loại string . Tuy nhiên, nó không bị ràng buộc vĩnh viễn. Nó chỉ là một nhãn; và có thể được gán cho bất kỳ loại đối tượng nào khác, chẳng hạn như một số thực, mà sẽ được lưu trữ với một id() khác.
>>> 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'>
hoặc một tuple. Biến label bây giờ nằm trên một đối tượng khác.
>>> 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'>
Chúng ta có thể thấy rằng kiểu của var thay đổi mỗi khi nó tham chiếu đến một đối tượng mới. Đó là lý do tại sao Python là một dynamically typed language .
Dynamic typing feature of Python giúp nó linh hoạt hơn so với C / C++ và Java. Tuy nhiên, nó dễ bị lỗi thời gian chạy, vì vậy lập trình viên phải cẩn thận.