Python động hay tĩnh?

Python là một ngôn ngữ được gõ động. Điều đó có nghĩa là không cần khai báo kiểu của biến khi gán giá trị cho nó. Chẳng hạn, bạn không cần khai báo kiểu dữ liệu của đối tượng

char major[] = "Tom";
2 là
char major[] = "Tom";
3 khi bạn khởi tạo đối tượng với giá trị chuỗi là
char major[] = "Tom";
4

major = 'Tom'

Trong một ngôn ngữ kiểu tĩnh như C, bạn phải khai báo kiểu dữ liệu của một đối tượng. Một chuỗi được khai báo là một mảng ký tự

char major[] = "Tom";

Mã hóa bằng ngôn ngữ được nhập động như Python chắc chắn linh hoạt hơn, nhưng người ta có thể muốn chú thích các kiểu dữ liệu của đối tượng và thực thi các ràng buộc kiểu. Nếu một hàm chỉ mong đợi các đối số nguyên, việc ném các chuỗi vào hàm có thể làm hỏng chương trình

Mặc dù đây là một trong những cạm bẫy chính của kiểu gõ động, Python 3 giới thiệu một số công cụ chú thích cho các lập trình viên để chỉ định và hạn chế các kiểu dữ liệu của các đối tượng.

Chú thích chức năng

Hãy lấy một hàm rất đơn giản

char major[] = "Tom";
5 làm ví dụ

def foo(n, s='Tom'):
return s*n

Hàm lấy

char major[] = "Tom";
6 và
char major[] = "Tom";
7 làm đối số và trả về
char major[] = "Tom";
8. Mặc dù nó có vẻ giống như một hàm nhân đơn giản và vô nghĩa, nhưng hãy lưu ý rằng giá trị mặc định của
char major[] = "Tom";
7 là
char major[] = "Tom";
4 là một chuỗi, không phải số. Chúng ta có thể suy luận rằng hàm này dự định trả về một chuỗi lặp lại chuỗi
char major[] = "Tom";
7 nhiều lần — chính xác là
char major[] = "Tom";
6 lần

char major[] = "Tom";
4

Chức năng này khá khó hiểu. Bạn có thể muốn viết các nhận xét và chuỗi tài liệu dài để giải thích hàm và chỉ định kiểu dữ liệu của đối số và giá trị trả về

char major[] = "Tom";
5

Ảnh của NASA trên Bapt

Python cung cấp một cách nhỏ gọn hơn để bạn thực hiện chú thích tùy chọn bằng các ký hiệu

def foo(n, s='Tom'):
return s*n
3 và
def foo(n, s='Tom'):
return s*n
4

char major[] = "Tom";
8

Các chú thích của hàm

char major[] = "Tom";
5 có sẵn từ thuộc tính
def foo(n, s='Tom'):
return s*n
6 của hàm. Đó là một từ điển ánh xạ các tên tham số thành các biểu thức được chú thích của chúng. Điều này cho phép kiểm tra loại thủ công bằng cách chạy mã thay vì tự mình xem mã nguồn. Khá tiện dụng

char major[] = "Tom";
1

Chú thích biến

Ngoài các đối số hàm và giá trị trả về, bạn cũng có thể chú thích các biến với một kiểu dữ liệu nhất định. Bạn cũng có thể chú thích các biến mà không cần khởi tạo chúng với bất kỳ giá trị nào

char major[] = "Tom";
2

Tốt hơn là chú thích các biến bằng cú pháp tích hợp này thay vì chú thích, vì chú thích thường bị mờ đi trong nhiều trình soạn thảo

Đối với các biến chú thích với các loại nâng cao hơn như

def foo(n, s='Tom'):
return s*n
7,
def foo(n, s='Tom'):
return s*n
8, v.v. , bạn sẽ cần nhập chúng từ mô-đun
def foo(n, s='Tom'):
return s*n
9. Tên của các loại được viết hoa, chẳng hạn như
char major[] = "Tom";
40,
char major[] = "Tom";
41,
char major[] = "Tom";
42, v.v.

char major[] = "Tom";
9

Các phần tử bên trong danh sách, bộ dữ liệu hoặc từ điển cũng có thể được chú thích. Các kiểu viết hoa đó lấy tham số trong ngoặc vuông

char major[] = "Tom";
43 như hình trên

char major[] = "Tom";
40 nhận một tham số, là loại được chú thích cho tất cả các phần tử bên trong danh sách. Các phần tử trong bộ có kích thước cố định có thể được chú thích từng cái một, trong khi các phần tử trong bộ có kích thước thay đổi có thể được chú thích bằng dấu chấm lửng
char major[] = "Tom";
45. Chúng tôi cũng có thể chỉ định các loại khóa và mục trong từ điển

Ảnh của Fabien Bazanegue trên Bazanegue

Chú thích nâng cao

Chúng tôi đã đề cập rằng

char major[] = "Tom";
40 chỉ nhận một tham số. Còn việc chú thích một danh sách chứa hỗn hợp các phần tử
char major[] = "Tom";
47 và
char major[] = "Tom";
48 thì sao?

major = 'Tom'
7

Nó cũng hỗ trợ mọi lớp do người dùng định nghĩa dưới dạng các loại trong chú thích

char major[] = "Tom";
0

Một callable cũng có thể được chú thích bằng cách sử dụng các kỹ thuật nêu trên. Có thể gọi được là một cái gì đó có thể được gọi, giống như một chức năng

char major[] = "Tom";
1

Hãy cẩn thận

Đầu tiên, chú thích loại không thay thế hoàn toàn chuỗi tài liệu và nhận xét. Một mô tả ngắn gọn và giải thích về các chức năng của bạn vẫn cần thiết cho mục đích dễ đọc và tái tạo. Kích hoạt chú thích loại có thể tránh nhận xét phức tạp chứa đầy thông tin như loại dữ liệu

Thứ hai, có một điều mà tôi nên nói với bạn ngay từ đầu. Trình thông dịch Python thực sự không tự động tiến hành bất kỳ loại kiểm tra nào. Điều đó có nghĩa là những chú thích đó không có tác dụng trong thời gian chạy, ngay cả khi bạn đang cố chuyển một loại đối tượng 'sai' cho một hàm

Vì vậy, bạn đã lãng phí thời gian của riêng mình để cố gắng tìm hiểu các chú thích loại?

Có sẵn nhiều mô-đun Python thực thi các ràng buộc đó trước thời gian chạy. mypy cho đến nay là trình kiểm tra loại được sử dụng phổ biến nhất mà không có chi phí thời gian chạy

Ảnh của REVOLT trên Bapt

Mang đi

Chú thích loại trong Python rất hữu ích để gỡ lỗi và kiểm tra loại tùy chọn bắt chước kiểu gõ tĩnh. Nó ngày càng trở nên phổ biến trong phát triển dự án, nhưng vẫn còn rất hiếm đối với các lập trình viên Python bình thường hơn

Mặc dù việc không có chú thích không nhất thiết làm giảm hiệu suất mã, nhưng nó vẫn được coi là một cách thực hành tốt cho các mục đích về độ bền, khả năng đọc và khả năng tái tạo

Chúng tôi hầu như chưa tìm hiểu sơ qua về gõ tĩnh và gõ chú thích trong Python. Trăn 3. 9 sắp ra mắt với một số nâng cấp về chú thích thay đổi, vì vậy hãy theo dõi bằng cách đăng ký nhận bản tin của tôi để nhận thông tin cập nhật về các bài viết mới của tôi

Thậm chí chưa sẵn sàng cho Python 3. số 8?

6 tính năng mới trong Python 3. 8 cho người mới sử dụng Python

Chuẩn bị tinh thần vì Python 2 không còn được hỗ trợ

hướng tới khoa học dữ liệu. com

Cảm ơn vì đã đọc. Bạn có thấy những tính năng này thú vị và hữu ích không? . Bạn cũng có thể thấy các bài viết sau hữu ích

Tại sao Python là một động?

Các ngôn ngữ khác như C, C++, Java, v.v. , có sự khai báo chặt chẽ các biến trước khi gán giá trị cho chúng. Python không có vấn đề gì ngay cả khi chúng ta không khai báo kiểu biến. Nó cho biết loại biến trong thời gian chạy chương trình . Vì vậy, Python là một ngôn ngữ được gõ động.

Tại sao Python tĩnh không động?

Python là ngôn ngữ được nhập động có nghĩa là việc kiểm tra biến được thực hiện trong thời gian chạy . Trong khi ở ngôn ngữ được nhập tĩnh, việc kiểm tra các biến hoặc bất kỳ biến nào khác được thực hiện tại thời điểm biên dịch.

Python có kiểu tĩnh không?

Có hai loại ngôn ngữ lập trình. Ngôn ngữ gõ tĩnh và gõ động. Python là ngôn ngữ được gõ động . Bạn không cần phải chỉ định rõ ràng kiểu dữ liệu của các biến. Điều này cũng đúng với các chức năng. Bạn không cần phải chỉ định loại đối số hoặc kiểu trả về của hàm.

Sự khác biệt giữa tĩnh và động trong Python là gì?

Ngôn ngữ tĩnh là ngôn ngữ hoạt động giống như ngôn ngữ động nhưng ít nỗ lực hơn và nỗ lực này là viết mã. Trong một ngôn ngữ tĩnh, chúng ta phải viết ít mã hơn so với một ngôn ngữ động