top of page

8 thủ thuật Python giúp bạn chuyên nghiệp hơn

Sau đây là 8 thủ thuật Pyton được các chuyên gia ưa dùng mà bạn có thể áp dụng để giúp mã Python của mình ngắn gọn và hiệu quả hơn.


thủ thuật Python

1. Sắp xếp các đối tượng theo các key đa dạng


Giả sử chúng ta muốn sắp xếp danh sách dictionary sau đây:


sắp xếp danh sách dictionary

Trong trường hợp không chỉ muốn sắp xếp nó theo tên hoặc tuổi mà muốn sắp xếp nó theo cả hai lĩnh vực. Trong SQL, đây sẽ là một truy vấn như sau:


select from people order by name age

Python có một giải pháp rất đơn giản để đảm bảo rằng các hàm sắp xếp theo một thứ tự ổn định, các items bằng nhau và giữ lại thứ tự ban đầu của chúng. Để sắp xếp theo tên và tuổi, chúng ta có thể làm điều này:


import operator

Hãy chú ý cách đảo ngược thứ tự. Đầu tiên, chúng ta sẽ sắp xếp theo độ tuổi, sau đó là theo tên. Với operator.itemgetter(), chúng ta sẽ có được các mục tuổi và tên từ mỗi từ điển trong danh sách một cách ngắn gọn. Kết quả như sau:


các mục tuổi và tên từ mỗi từ điển trong danh sách

Theo cách này, tên sẽ được ưu tiên sắp xếp trước, sau đó sẽ đến tuổi nếu tên giống nhau. Nhờ vậy, “John” được gom vào thành nhóm và sẽ sắp xếp theo tuổi.


2. Danh sách bao quát


Một danh sách bao quát có thể thay thế cho những loop dùng để điền vào danh sách. Cú pháp cơ bản cho danh sách bao quát là:


Danh sách bao quát

Một ví dụ cơ bản về điền vào danh sách với một chuỗi các số:

Ngoài việc có thể sử dụng một biểu thức, bạn cũng có thể thực hiện một số phép toán:


thực hiện một số phép toán

Bởi vì bạn có thể sử dụng một biểu thức, bạn cũng có thể thực hiện một số phép toán:


thực hiện một số phép toán

Hoặc có thể gọi một chức năng bên ngoài:


chức năng bên ngoài

Cuối cùng, bạn có thể sử dụng "if" để lọc danh sách. Trong trường hợp này, chúng tôi chỉ giữ các giá trị được chia cho 2:


sử dụng "if" để lọc danh sách

3. Kiểm tra bộ nhớ sử dụng của các đối tượng


Bạn có thể kiểm tra mức sử dụng bộ nhớ của một đối tượng bằng sys.getsizeof () :


kiểm tra mức sử dụng bộ nhớ

Range function chỉ trả về một class hoạt động như một danh sách. Một miền giá trị có hiệu quả bộ nhớ cao hơn nhiều so với việc sử dụng danh sách số thực tế.


Bằng cách sử dụng một danh sách bao quát để tạo một danh sách thực tế các số từ cùng một phạm vi:


sử dụng một danh sách bao quát để tạo một danh sách thực tế

Nhờ sys.getsizeof(), bạn có thể tìm hiểu thêm về Python và việc sử dụng bộ nhớ.


4. Data classes


Từ phiên bản 3.7, Python cung cấp data classes. Có một số lợi thế so với các class thông thường hoặc các lựa chọn thay thế khác như trả về nhiều giá trị hoặc dictionaries:


- Một data class yêu cầu một lượng code tối thiểu


- So sánh các lớp dữ liệu vì __eq__ được triển khai


- In một data class để gỡ lỗi vì __repr__ cũng được triển khai


- Data classes yêu cầu gợi ý, giảm khả năng lỗi


Một ví dụ về data class:


Data classes

5. The Attrs Package


Thay vì data classes, bạn có thể sử dụng attrs. Có hai lý do để chọn attrs:


- Bạn đang sử dụng phiên bản Python cũ hơn 3.7


- Bạn muốn nhiều tính năng hơn


Gói attrs hỗ trợ tất cả các phiên bản Python chính, bao gồm CPython 2.7 và PyPy. Một số attrs bổ sung được cung cấp trên các data class thông thường là trình xác nhận và trình chuyển đổi. Ví dụ:


The Attrs Package

Trên thực tế, các tác giả của attrs đã làm việc trên PEP để giới thiệu các lớp dữ liệu. Các data class được đơn giản hơn (dễ hiểu hơn), trong khi attrs cung cấp đầy đủ các tính năng bạn có thể muốn!


6. Hợp nhất các dictionary (Python 3.5+)


Từ phiên bản Python 3.5 đã dễ dàng hơn để hợp nhất dictionaries:


Hợp nhất các dictionary (Python 3.5+)

Trong trường hợp nếu các key bị chồng chéo, các key từ dictionary đầu tiên sẽ bị viết trồng lên nhau.


Trong Python 3.9, hợp nhất các dictionary trở nên gọn gàng hơn và có thể được viết lại thành:


hợp nhất các dictionary

7. Tìm giá trị thường xuyên nhất


Để tìm giá trị xảy ra thường xuyên nhất trong danh sách hoặc chuỗi:


Tìm giá trị thường xuyên nhất

- max () sẽ trả về giá trị cao nhất trong danh sách. Key argument có một hàm đối số duy nhất để tùy chỉnh thứ tự sắp xếp là test.count. Hàm được áp dụng cho từng mục trên iterable.


- test.count là một chức năng tích hợp của danh sách. Nó nhận một đối số và sẽ đếm số lần xuất hiện cho đối số đó. Vì vậy, test.count (1) sẽ trả về 2 và test.count (4) trả về 4.


- Set (test) trả về tất cả các giá trị duy nhất từ test {1, 2, 3, 4}


Vì vậy, trong dòng mã đơn này lấy tất cả các giá trị thử nghiệm duy nhất, là {1, 2, 3, 4}. Tiếp theo, max sẽ áp dụng hàm list.count cho chúng và trả về giá trị tối đa.


Cập nhật, một số bình luận đã chỉ ra một cách hiệu quả hơn để làm điều này:


from collections import counter

8. Trả về nhiều giá trị


Các hàm trong Python có thể trả về nhiều hơn một biến mà không cần dictionary, list hoặc data class. Nó hoạt động như thế này:


Trả về nhiều giá trị

Điều này là ổn đối với một số lượng hạn chế của các giá trị trả về. Nhưng nếu vượt qua 3 giá trị thì nên được đưa vào.

Nguồn: tổng hợp

Hình ảnh: tổng hợp

-------------------------------

JT1 - IT Recruitment Agency

Email: hi@jt1.vn

Điện thoại: +8428 6675 6685

Xem thêm các bài viết khác tại: https://www.jt1.vn/blog

Theo dõi chúng tôi tại: https://www.facebook.com/jt1asia/

Job_link_banner.gif
bottom of page