Khi nào Python thêm gợi ý loại?
Tôi là nhà nghiên cứu và phát triển web tự do đến từ Malawi. Tôi thích học những điều mới và việc viết lách giúp tôi hiểu và củng cố các khái niệm. Tôi hy vọng bằng cách chia sẻ kinh nghiệm của mình, những người khác có thể học được điều gì đó từ họ
Mức độ phổ biến của gợi ý nhập đang gia tăng trong cộng đồng Python. Điều này sẽ dẫn chúng ta đến đâu? Show Tất cả các Pythonistas đều biết rằng trong một vài năm, gợi ý kiểu của Python đã nhanh chóng trở nên phổ biến. Nó bắt đầu trở lại trong Python 3. 5 và kể từ đó, chức năng này ngày càng có nhiều loại và chức năng hơn, và— trong Python 3. 10 — ngay cả một toán tử mới, Tôi đã nghe nhiều ý kiến khác nhau về gợi ý loại, từ giận dữ và thù hận đến tình yêu và sự tận tâm. Hầu hết các tác giả viết về gợi ý kiểu trong Python đều coi chúng là hữu ích, điều gì đó giúp tăng khả năng đọc mã, đặc biệt trong trường hợp cơ sở mã lớn. Tuy nhiên, khi làm như vậy, chúng thường hiển thị các ví dụ rất đơn giản về gợi ý loại. Mặc dù gợi ý kiểu cho phép một người sử dụng trình kiểm tra kiểu tĩnh, nhưng chúng tôi sẽ không thảo luận về chủ đề này trong bài viết này. Tôi sẽ chỉ thừa nhận rằng việc kiểm tra tĩnh như vậy thực sự có thể là một công cụ hữu ích. Ở đây, chúng ta sẽ thảo luận về một chủ đề gây tranh cãi hơn một chút, đó là liệu gợi ý loại có hữu ích hay không. Một số người coi điều này là đương nhiên, nhưng tôi thì không. Tôi muốn xem bằng chứng. Giống như hầu hết mọi thứ, quá nhiều điều tốt có thể trở nên tồi tệ. Có phải như vậy với gợi ý kiểu Python không? Loại gợi ý có nhiều người ủng hộ. Một số giới hạn bản thân để nói rằng đó là một công cụ cực kỳ hữu ích. Những người khác cho rằng bạn cần sử dụng gợi ý kiểu vì không có chúng, mã Python rất khó đọc, nếu không muốn nói là khó hiểu Vì lợi ích của cuộc thảo luận, tôi muốn yêu cầu bạn giữ cho tâm trí của bạn cởi mở. Hiện tại, đừng coi thường những lợi thế của gợi ý loại. Thay vào đó, hãy cố gắng phân tích chúng để tìm ra ưu và nhược điểm của chúng. Bây giờ, với tâm trí cởi mở, chúng ta hãy bắt đầu cuộc thảo luận về cách sử dụng gợi ý loại trong Python, tập trung vào các câu hỏi sau. Chúng có hữu ích như chúng ta vẫn thường nghe không? Thay vì Giới thiệu về Gợi ý LoạiTôi sẽ không giải thích các gợi ý về loại, vì điều này sẽ làm cho bài viết này quá dài. Bên cạnh đó, chúng đã được mô tả ở nhiều nguồn khác nhau, cả ở đây trên Medium (e. g. , đây, đây, hoặc đây). Trong ấn bản thứ 2 của Fluent Python, Luciano Ramalho giới thiệu khá chi tiết. Bạn có thể thấy các gợi ý về loại đang hoạt động trong nhiều cuốn sách. Ví dụ, trong Steven F. Lập trình Python chức năng của Lott (cũng là phiên bản thứ 2) Gợi ý loại phục vụ ba mục đích chính. nó cho phép bạn chạy các trình kiểm tra tĩnh trên mã của bạn; . Hãy xem xét một vài ví dụ. Chỉ cần phân tích chữ ký của các hàm là đủ, đó là nơi bao gồm các gợi ý về loại Trước khi tiếp tục, hãy đọc đoạn mã dưới đây và cố gắng xem càng nhiều càng tốt từ chữ ký của các chức năng Bây giờ, hãy nói về các chức năng này
Chắc chắn, hiếm khi chúng ta có thể tìm hiểu mọi thứ về chức năng làm gì chỉ bằng cách đọc chữ ký của nó. Nhưng nếu chữ ký tốt, chúng ta có thể học được khá nhiều điều mà không cần nhìn vào phần thân của hàm. Nhưng khi nó lộn xộn như trong Tất nhiên, trong Có nhiều cách để cải thiện khả năng đọc. Nhìn lại một lần nữa vào Trên thực tế, chúng ta có thể. Đây là nơi bí danh loại (mà đôi khi tôi gọi là loại tùy chỉnh) có thể giúp ích rất nhiều Chữ ký này nói lên những gì chúng tôi đã bỏ lỡ trước đây và nó làm được như vậy nhờ nhập bí danh Thông thường, sẽ tốt hơn nếu sử dụng cấu trúc dữ liệu thực tế thay vì bí danh loại Ở đây, Nhớ lại Vì vậy, Gõ gợi ý có thể hữu ích như thế nào? Gợi ý nhập có thể giúp tăng khả năng đọc, như các chức năng Xin lỗi, cái gì? . Bạn đã đúng khi chỉ ra nó như một phản ví dụ. Hãy nhớ lại chữ ký của Cả hai phiên bản đều không thể đọc được, vì một lý do duy nhất. tên vô nghĩa của chính hàm và đối số của nó. Những gợi ý loại này không giúp giải thích chức năng của hàm này, nhưng chúng có thể làm bạn đau đầu hơn
Như bạn thấy, bản thân các loại, không có bất kỳ thứ gì khác, cũng thường vô nghĩa. Chúng tôi biết rằng
Ngay cả khi đặt tên tốt được sử dụng, gợi ý kiểu có thể làm cho chữ ký của hàm khó đọc và khó hiểu. Nhìn vào ví dụ sau (nguồn) từ chối trách nhiệm. Đây là một ví dụ về gợi ý kiểu trong Python và nó không đi ngược lại các quy tắc. Tôi không muốn chỉ trích mã cụ thể này, nhưng để chỉ ra những gì tôi không thích trong một số cách sử dụng gợi ý kiểu Bây giờ, hãy loại bỏ hoàn toàn gợi ý loại Vì chúng tôi không có gợi ý loại cho Không có gợi ý về loại, thật dễ dàng để thấy rằng Tôi đồng ý rằng những người dùng Python mới bắt đầu có thể gặp vấn đề khi xem tất cả những điều này. Nhưng bạn có nghĩ rằng gợi ý loại sẽ giúp họ nhìn thấy tất cả điều này? . Với ví dụ này, tôi muốn chỉ ra rằng đôi khi các gợi ý gõ khiến mã trở nên phức tạp không cần thiết. Vì vậy, hầu hết thời gian, tôi thích một giải pháp ở giữa, một giải pháp trong đó gợi ý loại được cung cấp một cách hợp lý (dễ hiểu). Điều này có nghĩa là tránh các gợi ý kiểu quá phức tạp Tất nhiên, đó là vấn đề sở thích, nhưng tôi sợ phải làm việc với mã chứa đầy các gợi ý kiểu dài và phức tạp. Tôi sử dụng các gợi ý loại, nhưng tôi thích những gợi ý đơn giản hơn, giống như những gợi ý trong một số ví dụ ở trên, chẳng hạn như Gợi ý loại khó không làm cho mã dễ hiểu hơn; . Đây là lý do tại sao tôi không bị thuyết phục bởi các câu lệnh đơn thuần kiểu gợi ý làm tăng khả năng đọc mã Python. Tôi có thể đồng ý rằng gợi ý kiểu dễ hiểu làm tăng khả năng đọc mã. Tuy nhiên, khi thực hành, nhiều gợi ý về loại mà tôi thấy không thể hiểu được.
Điều này gợi ý rằng cách tốt nhất để sử dụng gợi ý kiểu hiệu quả là học cách viết mã sạch. Những kỹ năng như vậy sẽ mang lại cho bạn khả năng sử dụng gợi ý loại hiệu quả và dễ đọc Trước khi kết luận, tôi muốn nhấn mạnh rằng tôi thích gõ tĩnh. Tôi đã sử dụng nó trong C và Go, cũng như trong Cython. Trong cả ba trường hợp này, tôi rất thích sử dụng kiểu gõ tĩnh và tôi thấy nó hữu ích. Nhưng chúng ta không được quên rằng gợi ý kiểu không phải là kiểu gõ tĩnh; Sự kết luậnGợi ý kiểu của Python không phải là một khái niệm mới nữa, nhưng nó vẫn đang phát triển. Ý kiến cá nhân của tôi là mặc dù không cần thiết nhưng các gợi ý nhập có thể hữu ích, đôi khi khá nhiều. Nhưng tôi sợ điều gì sẽ đến. Tôi sợ rằng tôi sẽ phải viết Trong nhiều năm, Python đã được coi là một ngôn ngữ tuyệt vời nhờ cú pháp dễ hiểu của nó. Liệu nó vẫn xứng đáng với ý kiến này? Dưới đây là một số quy tắc tôi sử dụng để làm cho gợi ý loại dễ hiểu
Đó là tất cả trong tay của chúng tôi. Danh tiếng của Python đang bị đe dọa. Chúng ta có thể biến gợi ý kiểu thành một chức năng hữu ích giúp mã Python dễ đọc hơn. Nhưng nếu chúng ta không đủ cẩn thận, nếu chúng ta làm theo những gợi ý điên rồ hơn. -more-loại-gợi ý. khái niệm, có thể Python sẽ xuống cấp từ từ nhưng đều đặn. Và trong mười năm nữa (có thể sớm hoặc muộn hơn một chút) nó sẽ trở thành một ngôn ngữ lập trình khó hiểu mà không ai muốn sử dụng do cú pháp vụng về và vụng về của nó Dù sao cũng chưa muộn. tất cả chúng ta có thể làm một cái gì đó về nó. Điều đơn giản nhất chúng ta có thể làm là sử dụng gợi ý loại một cách khôn ngoan. Nếu bạn đồng ý với tôi, từ giờ trở đi, hãy kiểm tra kỹ tất cả các gợi ý loại trong mã Python và sửa lại mọi thứ có vẻ không rõ ràng hoặc mơ hồ Cảm ơn vì đã tham gia cùng tôi trong cuộc thảo luận chắc chắn gây tranh cãi này. Tôi chắc rằng nhiều bạn không đồng ý với tôi. Đồng thời, tôi hy vọng một số bạn chia sẻ ý kiến của tôi, và ai biết được, có lẽ tôi đã thành công trong việc thuyết phục một số bạn rằng chúng ta nên cẩn thận khi sử dụng các gợi ý loại? Python có gợi ý kiểu không?Với Python 3. 5, gợi ý nhập đã chính thức trở thành một phần của ngôn ngữ (PEP 484). Sử dụng công cụ kiểm tra mã hoặc kẻ nói dối, nhà phát triển có thể kiểm tra tính nhất quán của các biến và loại của chúng trên cơ sở mã và thực hiện các phân tích mã tĩnh mà trước đây khó hoặc không thể thực hiện được.
Python có thực thi các gợi ý kiểu không?Python sẽ luôn là ngôn ngữ được gõ động. 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. Không giống như cách thức hoạt động của các loại trong hầu hết các ngôn ngữ nhập tĩnh khác, bản thân các gợi ý nhập không khiến Python thực thi các loại .
Điểm gợi ý kiểu trong Python là gì?Gợi ý nhập cải thiện IDE và linters . Chúng làm cho việc lập luận tĩnh về mã của bạn trở nên dễ dàng hơn nhiều. Nhập gợi ý giúp bạn xây dựng và duy trì kiến trúc sạch hơn. Hành động viết các gợi ý về loại buộc bạn phải suy nghĩ về các loại trong chương trình của mình.
Gợi ý loại Python có cải thiện hiệu suất không?Nếu bạn muốn viết mã python hiện đại và tăng chất lượng mã của mình, hãy nhập gợi ý. Tuy nhiên, có lẽ bạn nên tránh thêm gợi ý loại nếu bạn sử dụng phiên bản cũ của Python, nếu bạn chưa quen với ngôn ngữ lập trình hoặc nếu hiệu suất là một vấn đề thực sự. |