Trong python, các biến là các vị trí bộ nhớ dành riêng để lưu trữ các giá trị. Python là ngôn ngữ kiểu động, không bắt buộc phải nói đến kiểu biến khi khai báo. Nó thực hiện kiểm tra kiểu trong thời gian chạy. Perl, Ruby, PHP, JavaScript là một số ví dụ về ngôn ngữ lập trình kiểu động
Kiểm tra tĩnh trong thời gian chạy
Ví dụ,
// Trăn
msg=”Xin chào thế giới”
in [tin nhắn]
Ở đây, biến msg chứa giá trị chuỗi “Xin chào thế giới”. Không bắt buộc phải đề cập đến loại thông báo dưới dạng chuỗi sẽ được quyết định khi chạy
Nếu chúng ta muốn biết loại biến, mã sẽ là
// Trăn
msg=”Xin chào thế giới”
in [tin nhắn]
print[type[msg]] // Kiểm tra kiểu
đầu ra
Chào thế giới
< lớp 'str' >
Một tính năng nữa của ngôn ngữ kiểu động là việc gán lại biến với các kiểu dữ liệu khác rất đơn giản.
Ví dụ,
// Trăn
msg=”Xin chào thế giới” //Chuỗi
in [tin nhắn]
in [loại [tin nhắn]]
msg=5 //Số nguyên
in [tin nhắn]
in [loại [tin nhắn]]
tin nhắn = 25. 25 // Nổi
in [tin nhắn]
in [loại [tin nhắn]]
đầu ra
Chào thế giới
< lớp 'str' >
5
25. 25
< lớp 'phao'>
Ban đầu, giá trị của biến msg là một chuỗi. Sau đó, nó được gán với một số nguyên. Cuối cùng, nó là một số dấu phẩy động. Cùng một biến msg được sử dụng để gán nhiều kiểu dữ liệu. Nó sẽ thực thi mà không có lỗi
Trong các ngôn ngữ lập trình kiểu tĩnh bắt buộc phải đề cập đến kiểu của biến khi khai báo. Nó thực hiện kiểm tra kiểu tại thời điểm biên dịch. Java, C, C++ là một số ví dụ về ngôn ngữ được gõ tĩnh
Kiểm tra tĩnh trong thời gian biên dịch
Ví dụ,
//Java
lớp học mẫu
{
public static void main[String[] args]
{
Tin nhắn chuỗi;
msg = “Xin chào thế giới”;
Hệ thống. ngoài. println[tin nhắn];
}
}
đầu ra
$ javac Mẫu. java
$ java Mẫu. lớp
Chào thế giới
Java là một ngôn ngữ kiểu tĩnh. Ở đây, biến msg đã được khai báo là chuỗi và sau đó gán giá trị “Hello World” cho nó. Không có lỗi trong quá trình biên dịch và nó sẽ hiển thị đầu ra tương ứng
Nhưng trong các ngôn ngữ kiểu tĩnh, nó không thể gán lại một biến với các kiểu dữ liệu khác trong cùng một mã nguồn. Nó sẽ hiển thị lỗi trong thời gian biên dịch
Chúng tôi cung cấp nhiều lựa chọn các khóa học từ các trường đại học và tổ chức văn hóa hàng đầu từ khắp nơi trên thế giới. Chúng được cung cấp từng bước một và có thể truy cập được trên thiết bị di động, máy tính bảng và máy tính để bàn, vì vậy bạn có thể phù hợp với việc học xung quanh cuộc sống của mình
Chúng tôi tin rằng việc học phải là một trải nghiệm xã hội, thú vị, vì vậy các khóa học của chúng tôi mang đến cơ hội thảo luận những gì bạn đang học với những người khác trong quá trình học, giúp bạn có những khám phá mới mẻ và hình thành ý tưởng mới.
Bạn có thể mở ra những cơ hội mới với quyền truy cập không giới hạn vào hàng trăm khóa học ngắn hạn trực tuyến trong một năm bằng cách đăng ký gói Không giới hạn của chúng tôi. Xây dựng kiến thức của bạn với các trường đại học và tổ chức hàng đầu.
Tìm hiểu thêm về cách FutureLearn đang thay đổi cách tiếp cận giáo dục
Trong bài học này, bạn sẽ tìm hiểu về hệ thống kiểu, so sánh kiểu gõ động và kiểu gõ tĩnh. Tất cả các ngôn ngữ lập trình bao gồm một số loại hệ thống loại chính thức hóa các loại đối tượng mà nó có thể làm việc và cách các loại đó được xử lý
Nhập động
Python là một ngôn ngữ được gõ động. Điều này có nghĩa là trình thông dịch Python chỉ kiểm tra kiểu khi mã chạy và kiểu của một biến được phép thay đổi trong suốt thời gian tồn tại của nó. Dưới đây là một vài ví dụ chứng minh những ý tưởng đó
>>>
>>> if False:
.. 1 + "two" # This line never runs, so no TypeError is raised
.. else:
.. 1 + 2
...
3
>>> 1 + "two" # Now this is type checked
TypeError: unsupported operand type[s] for +: 'int' and 'str'
Trong ví dụ đầu tiên, nhánh
>>> thing = "Hello"
>>> type[thing]
>>> thing = 28.1
>>> type[thing]
7 không bao giờ chạy, vì vậy nó không bao giờ được kiểm tra loại. Ví dụ thứ hai cho thấy rằng khi đánh giá >>> thing = "Hello"
>>> type[thing]
>>> thing = 28.1
>>> type[thing]
7, nó sẽ tăng giá trị >>> thing = "Hello"
>>> type[thing]
>>> thing = 28.1
>>> type[thing]
9 vì bạn không thể cộng một số nguyên và một chuỗi trong PythonTrong ví dụ tiếp theo này, bạn xem liệu các biến có thể thay đổi loại không
>>>
>>> thing = "Hello"
>>> type[thing]
>>> thing = 28.1
>>> type[thing]
>>> thing = "Hello"
>>> type[thing]
>>> thing = 28.1
>>> type[thing]
0 trả về loại đối tượngNhập tĩnh
Ngược lại với gõ động là gõ tĩnh. Kiểm tra loại tĩnh được thực hiện mà không cần chạy chương trình. Trong hầu hết các ngôn ngữ được nhập tĩnh, chẳng hạn như C và Java, điều này được thực hiện khi chương trình của bạn được biên dịch. Loại biến không được phép thay đổi trong suốt thời gian tồn tại của nó
Trong ví dụ về
>>> thing = "Hello"
>>> type[thing]
>>> thing = 28.1
>>> type[thing]
0 trong Java này, hãy xem phần giữa, trong đó >>> thing = "Hello"
>>> type[thing]
>>> thing = 28.1
>>> type[thing]
1 được định nghĩa tĩnh là một loại của >>> thing = "Hello"
>>> type[thing]
>>> thing = 28.1
>>> type[thing]
2 và sau đó được gán giá trị >>> thing = "Hello"
>>> type[thing]
>>> thing = 28.1
>>> type[thing]
3public class HelloTypes {
public static void main[String[] args] {
String thing;
thing = "Hello World";
System.out.println[thing];
}
}
Đây không phải là khóa học về Java, vì vậy đừng lo lắng về các chi tiết cụ thể về cách tạo mã Java. Mục đích của ví dụ này là để cho bạn thấy rằng có nhiều bước bổ sung trong hầu hết các ngôn ngữ được nhập tĩnh
Trong ví dụ tiếp theo này, bạn sẽ sử dụng lệnh
>>> thing = "Hello"
>>> type[thing]
>>> thing = 28.1
>>> type[thing]
4 để biên dịch chương trình. Thao tác này tạo một tệp mới có cùng tên nhưng có phần mở rộng khác là >>> thing = "Hello"
>>> type[thing]
>>> thing = 28.1
>>> type[thing]
5 thay vì >>> thing = "Hello"
>>> type[thing]
>>> thing = 28.1
>>> type[thing]
6. Đó là tệp có thể chạy bằng lệnh >>> thing = "Hello"
>>> type[thing]
>>> thing = 28.1
>>> type[thing]
7>>> thing = "Hello"
>>> type[thing]
>>> thing = 28.1
>>> type[thing]
1Nếu bạn cố gắng gán lại
>>> thing = "Hello"
>>> type[thing]
>>> thing = 28.1
>>> type[thing]
8 cho một giá trị thuộc loại khác, ban đầu bạn sẽ không gặp lỗi. Chỉ khi mã được biên dịch, bạn mới thấy lỗi>>> thing = "Hello"
>>> type[thing]
>>> thing = 28.1
>>> type[thing]
3Dòng
>>> thing = "Hello"
>>> type[thing]
>>> thing = 28.1
>>> type[thing]
9 đang cố thay đổi kiểu của >>> thing = "Hello"
>>> type[thing]
>>> thing = 28.1
>>> type[thing]
8 từ chuỗi thành kiểu int. Nếu bạn biên dịch mã này, bạn sẽ thấy lỗi>>> thing = "Hello"
>>> type[thing]
>>> thing = 28.1
>>> type[thing]
6Python sẽ luôn. Tuy nhiên, PEP 484 đã giới thiệu các gợi ý về kiểu, cho phép thực hiện kiểm tra kiểu tĩnh của mã Python