Tổng hợp các Module Python “khủng” mà bạn có thể đã bỏ qua

1994

Python là một ngôn ngữ lập trình tuyệt vời, và nó chứa nhiều module tích hợp sẵn nhằm giúp chúng ta viết code tốt hơn, code đẹp hơn.

Mục tiêu

Thông qua bài viết này, chúng ta sẽ sử dụng một vài module và phương pháp ít ai biết mà có thể cải thiện được cách code của chúng ta cả về phần nhìn và tính hiệu quả.

NamedTuple

Tôi tin rằng một vài người hẳn đã biết tới câu lệnh phổ biến hơn là namedtuple từ module collections (Nếu chưa biết bạn có thể xem tại đây), nhưng kể từ phiên bản Python 3.6, một loại mới đã có trong module typingNamedTuple. Cả hai đều được thiết kế để giúp bạn nhanh chóng tạo ra những đối tượng bất biến có thể đọc được.

NamedTuple thực ra là một phiên bản viết lại của namedtuple, và theo quan điểm của tôi thì nó dễ đọc hơn nhiều:

Còn thay vào đó nếu ta sử dụng namedtuple:

array.array

Các mảng giá trị số hiệu quả. Mảng là những loại trình tự hoạt động rất giống như list, ngoại trừ các loại đối tượng được lưu trữ bị hạn chế.

Khi sử dụng module array, chúng ta cần khởi tạo bằng 1 typecode kiểu mã mà trong đó tất cả những element phần tử đều được sử dụng. Hãy so sánh tính hiệu quả về thời gian với một list thông thường, viết nhiều số nguyên trong một file (sử dụng module pickle để viết một list thông thường):

https://gist.github.com/AdamGold/961758c66cdfe92642eabb61d9ce9866

Có thể thấy là nhanh hơn gấp 14 lần bình thường. Tất nhiên là cũng phụ thuộc vào module pickle , nhưng sử dụng mảng vẫn gọn hơn so với sử dụng list. Vậy nên nếu bạn đang dùng những giá trị số đơn giản, bạn nên cân nhắc việc sử dụng module array.

Có thể bạn muốn xem:

  Phân tích 80+ email từ chối ứng tuyển vào vị trí lập trình viên Python và kết quả không ai ngờ đến!

itertools.combinations

itertools là một module ấn tượng. Nó có rất nhiều phương thức khác nhau giúp tiết kiệm thời gian, tất cả đều được liệt kê ở đây. Thậm chí còn có cả một kho GitHub viết nhiều hơn về itertools.

Tôi đã sử dụng phương thức combinations trong tuần này và tôi nghĩ là tôi sẽ chia sẻ về nó. Phương thức này lấy một số lặp và một số nguyên làm đối số, và tạo ra một trình bao gồm tất cả các tổ hợp có thể có của phép lặp với một dãy số nguyên dài nhất mà không bị trùng lặp:

dict.fromkeys

Đây là cách viết một dict cách nhanh chóng và đẹp mắt với giá trị mặc định:

Cuối cùng nhưng không kém phần quan trọng – Module dis

Module dis hỗ trợ phân tích bytecode CPython bằng cách phân tách nó.

Có thể bạn đã biết hoặc chưa biết, Python dịch mã nguồn thành một tập hợp các chỉ thị gọi là “bytecode”. Module dis giúp chúng ta xử lý những chỉ thị này, và đồng thời nó cũng là một công cụ debug tuyệt vời.

Đây là một ví dụ trong cuốn Fluent Python:

Bị một lỗi nhưng hệ thống vẫn hoạt động. Tại sao lại như vậy? Nếu chúng ta nhìn vào bytecode (Tôi đã thêm chú thích gần những phần quan trọng):

Trước khi kết thúc… 

<iframe src=”https://giphy.com/embed/l2R0eYcNq9rJUsVAA” width=”480″ height=”288″ frameBorder=”0″ class=”giphy-embed” allowFullScreen></iframe><p><a href=”https://giphy.com/gifs/latelateshow-james-corden-late-show-l2R0eYcNq9rJUsVAA”>via GIPHY</a></p>

Thanks for reading! For more Python related articles and other cool stuff, you can follow me on Medium or GitHub (I star some awesome repos!).

Xin cảm ơn các bạn đã đọc bài viết này! Để đọc nhiều bài viết hơn về Python và những chủ đề hay khác, bạn có thể follow tôi trên Medium hoặc GitHub (….

Nếu bạn thích bài viết này, hãy nhấn giữ nút 👏 để những người khác có thể tìm thấy bài viết. Bạn càng giữ lâu, bạn sẽ càng chia sẻ cho nhiều người hơn!

Và đừng ngần ngại chia sẻ thêm nhiều kiến thức bổ ích về Python ở phần bình luận bên dưới nhé!

TopDev via Medium

  Học Python từ con số 0 (Phần 1) - The Basics