Meghana Bhamare
Meghana Bhamare
Kỹ sư phần mềm cao cấp tại Abzooba
Xuất bản ngày 4 tháng 3 năm 2022
+ Theo dõi
Nhập mạnh có nghĩa là các biến có một loại và loại đó quan trọng khi thực hiện các thao tác trên một biến
Nhập động có nghĩa là loại biến chỉ được xác định trong thời gian chạy
mặt khác, các kiểu trong Python được xác định trong thời gian chạy thay vì thời gian biên dịch và do đó các lập trình viên không bắt buộc phải khai báo các biến trước khi sử dụng chúng trong mã. Về mặt kỹ thuật, một biến được tạo khi nó được gán giá trị lần đầu tiên trong mã
Điều này có nghĩa là trước tiên một biến phải được gán một giá trị trước khi nó được tham chiếu trong mã nếu không sẽ báo lỗi. Và như đã đề cập trước đó, việc gán biến không bao giờ đi kèm với định nghĩa kiểu vì kiểu được lưu trữ với các đối tượng chứ không phải với biến/tên
Mỗi khi một biến được xác định, nó sẽ tự động được thay thế bằng đối tượng trong bộ nhớ mà nó tham chiếu
Mối quan hệ giữa các đối tượng, biến và tham chiếu
Tóm lại, mỗi khi chúng ta gán biến, Python sẽ thực hiện ba bước sau
1. Tạo một đối tượng trong bộ nhớ chứa giá trị
2. Nếu tên biến chưa tồn tại trong không gian tên, hãy tiếp tục và tạo nó
3. Gán tham chiếu đến đối tượng [trong bộ nhớ] cho biến
Biến, là một tên tượng trưng trong một bảng hệ thống chứa các liên kết [i. e. tham chiếu] đến các đối tượng
Nói cách khác, tham chiếu là con trỏ từ biến đến đối tượng. Tuy nhiên, trong Python, các biến không có kiểu
Do đó, có thể gán các đối tượng khác loại cho cùng một tên biến, như hình bên dưới
một = 1
a = 'Xin chào thế giới'
a = Sai
Trong dòng đầu tiên, biến a đang được gán với tham chiếu đến đối tượng số nguyên có giá trị 1. Tương tự như vậy, dòng thứ hai thay đổi tham chiếu của biến a thành một đối tượng khác của kiểu chuỗi trong khi dòng cuối cùng thay đổi tham chiếu để bây giờ a trỏ đến một đối tượng boolean
Khi chúng ta đề cập đến các đối tượng, chúng ta thực sự muốn nói đến một phần bộ nhớ được cấp phát có khả năng biểu thị giá trị mà chúng ta muốn
Giá trị này có thể là một số nguyên, một chuỗi hoặc bất kỳ loại nào khác. Ngoài giá trị, các đối tượng cũng đi kèm với một vài trường tiêu đề
Các trường này bao gồm loại đối tượng cũng như bộ đếm tham chiếu của đối tượng được Trình thu gom rác sử dụng để xác định xem có thể lấy lại bộ nhớ của các đối tượng không sử dụng hay không
Và vì các đối tượng Python có khả năng biết loại của chính chúng, nên các biến không cần phải nhớ đoạn thông tin này
Thí dụ
Một trong những tính năng chính của Python là mọi thứ đều là đối tượng và kiểu chỉ là một thuộc tính của đối tượng
n = 5
dir[n]
Để minh họa, chúng ta có thể gán một số nguyên duy nhất cho một biến và sử dụng dir hàm có sẵn trong Python để tìm ra các thuộc tính của đối tượng. Nếu bạn thực hiện hai dòng sau trong một trình thông dịch tương tác, thì rõ ràng là một số nguyên Python phức tạp hơn nhiều so với chỉ một số
một = 7
b = 6
c = a + b
có một số bước Python cần thực hiện
1. Kiểm tra các loại của cả hai toán hạng
2. Kiểm tra xem cả hai đều hỗ trợ thao tác +
3. Trích xuất hàm thực hiện thao tác + [do các đối tượng quá tải toán tử có thể có định nghĩa tùy chỉnh để bổ sung]
4. Trích xuất các giá trị thực tế của các đối tượng
5. Thực hiện thao tác +
6. Xây dựng một đối tượng số nguyên mới cho kết quả
Do Python được gõ động nên trình thông dịch không thể biết
biết trước loại đối tượng mà người ta đang xử lý và mỗi khi hai biến được thêm vào, người ta cần thực hiện tất cả các bước trên
Câu hỏi phỏng vấn về kiểu động trong python
1. Loại ngôn ngữ nào là python?
trả lời. Python là ngôn ngữ lập trình hướng đối tượng, thông dịch, tương tác. Python là một ngôn ngữ được giải thích, trái ngược với ngôn ngữ được biên dịch, mặc dù sự khác biệt có thể không rõ ràng do sự hiện diện của trình biên dịch mã byte. Điều này có nghĩa là các tệp nguồn có thể được chạy trực tiếp mà không cần tạo một tệp thực thi một cách rõ ràng.
Python is strongly typed
Hãy bắt đầu với khía cạnh gõ mạnh. Strong typing
có nghĩa là loại đối tượng không thay đổi theo những cách không mong muốn. Một chuỗi chỉ chứa các chữ số không kỳ diệu trở thành một số, như có thể xảy ra trong các ngôn ngữ được nhập yếu như JavaScript và Perl. Mọi thay đổi về loại đều yêu cầu chuyển đổi loại rõ ràng [còn gọi là truyền]
1 + "1" # TypeError in Python
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
1 + "1" // "11" in JavaScript
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Python is dynamically typed
Hãy nói về mặt trái của gõ động [gõ tĩnh] cho tương phản. Trong một ngôn ngữ được gõ tĩnh chẳng hạn như C++, bạn cần sửa kiểu của biến. Loại này sẽ giống với loại của đối tượng được gán cho biến đó
int x; // declare step
x = 4; // assign step
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình
Trong một ngôn ngữ được nhập động, trình thông dịch không gán một loại cho mỗi biến vì loại có thể thay đổi trong thời gian chạy. Nếu bạn hỏi một biến kiểu của nó, nó sẽ cung cấp cho bạn kiểu của đối tượng mà nó hiện đang được gán vào thời điểm đó
x = 4
print[type[4]] # at this moment, x points to an integer
x = "Hello, world"
print[type[x]] # and at this moment, x points to a string
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình