Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.
8 mẹo tái cấu trúc Python giúp mã sạch hơn và Pythonic
Trong lập trình, việc giữ cho mã nguồn rõ ràng, gọn gàng và dễ hiểu không chỉ giúp tiết kiệm thời gian bảo trì mà còn nâng cao chất lượng dự án. Python, với triết lý "Simple is better than complex," luôn khuyến khích các nhà phát triển áp dụng các phương pháp viết mã hiệu quả và Pythonic. Trong bài viết này, mình sẽ mình 8 mẹo tái cấu trúc mã Python đơn giản nhưng cực kỳ hữu ích, giúp bạn tối ưu hóa mã nguồn, cải thiện hiệu suất và tăng tính đọc hiểu một cách dễ dàng.
1. Gộp các câu lệnh if
lồng nhau trong Python
Thay vì sử dụng nhiều câu lệnh if
lồng nhau, bạn có thể gộp chúng lại thành một câu lệnh duy nhất để giảm độ phức tạp của mã.
Trước khi cải tiến:
if a: if b: pass
Sau khi cải tiến:
Bài viết này được đăng tại [free tuts .net]
if a and b: pass
2. Sử dụng any
thay cho vòng lặp trong Python
Khi cần kiểm tra có ít nhất một phần tử thỏa mãn điều kiện, thay vì dùng vòng lặp, bạn có thể sử dụng hàm any
để làm điều này ngắn gọn hơn.
Trước khi cải tiến:
numbers = [-1, -2, -4, 0, 3, -7] has_positives = False for n in numbers: if n > 0: has_positives = True break
Sau khi cải tiến:
has_positives = any(n > 0 for n in numbers)
3. Đưa các khai báo cố định ra khỏi vòng lặp trong Python
Nếu một biến không thay đổi trong suốt vòng lặp, bạn nên khai báo nó bên ngoài vòng lặp để tránh lặp lại thao tác không cần thiết.
Trước khi cải tiến:
for building in buildings: city = 'London' addresses.append(building.street_address, city)
Sau khi cải tiến:
city = 'London' for building in buildings: addresses.append(building.street_address, city)
4. Loại bỏ biến trung gian không cần thiết trong Python
Nếu biến được tạo ra chỉ để trả về ngay sau đó, bạn có thể trả về trực tiếp giá trị mà không cần khai báo biến trung gian.
Trước khi cải tiến:
def state_attributes(self): """Trả về thuộc tính trạng thái.""" state_attr = { ATTR_CODE_FORMAT: self.code_format, ATTR_CHANGED_BY: self.changed_by, } return state_attr
Sau khi cải tiến:
def state_attributes(self): """Trả về thuộc tính trạng thái.""" return { ATTR_CODE_FORMAT: self.code_format, ATTR_CHANGED_BY: self.changed_by, }
5. Sử dụng biểu thức if
ngắn gọn trong Python
Thay vì dùng câu lệnh if-else
dài dòng để gán giá trị cho biến, bạn có thể viết gọn trên một dòng bằng cách sử dụng biểu thức if
.
Trước khi cải tiến:
if condition: x = 1 else: x = 2
Sau khi cải tiến:
x = 1 if condition else 2
6. Thêm "Guard Clause" để giảm độ lồng ghép trong Python
Thay vì đặt tất cả logic trong một câu lệnh if
, bạn có thể thêm guard clause để kiểm tra điều kiện và thoát ra sớm, giúp giảm mức độ lồng ghép và làm mã rõ ràng hơn.
Trước khi cải tiến:
def should_i_wear_this_hat(self, hat): if isinstance(hat, Hat): current_fashion = get_fashion() weather_outside = self.look_out_of_window() is_stylish = self.evaluate_style(hat, current_fashion) if weather_outside.is_raining: print("Damn.") return True else: print("Great.") return is_stylish else: return False
Sau khi cải tiến:
def should_i_wear_this_hat(self, hat): if not isinstance(hat, Hat): return False current_fashion = get_fashion() weather_outside = self.look_out_of_window() is_stylish = self.evaluate_style(hat, current_fashion) if weather_outside.is_raining: print("Damn.") return True print("Great.") return is_stylish
7. Di chuyển khai báo biến gần nơi sử dụng trong Python
Để mã dễ đọc hơn, bạn nên khai báo biến gần nơi sử dụng nhất.
Trước khi cải tiến:
def should_i_wear_this_hat(self, hat): if not isinstance(hat, Hat): return False current_fashion = get_fashion() weather_outside = self.look_out_of_window() if weather_outside.is_raining: print("Damn.") return True print("Great.") is_stylish = self.evaluate_style(hat, current_fashion) return is_stylish
Sau khi cải tiến:
def should_i_wear_this_hat(self, hat): if not isinstance(hat, Hat): return False weather_outside = self.look_out_of_window() if weather_outside.is_raining: print("Damn.") return True print("Great.") return self.evaluate_style(hat, get_fashion())
8. Kiểm tra danh sách rỗng một cách đơn giản trong Python
Thay vì kiểm tra độ dài của danh sách bằng len(your_list) > 0
, bạn có thể chỉ cần viết if your_list
vì trong Python, các danh sách rỗng được coi là False
.
Trước khi cải tiến:
if len(list_of_hats) > 0: hat_to_wear = choose_hat(list_of_hats)
Sau khi cải tiến:
if list_of_hats: hat_to_wear = choose_hat(list_of_hats)
Kết bài
Tóm lại, việc áp dụng 8 mẹo tái cấu trúc mã Python này không chỉ giúp mã nguồn của bạn trở nên gọn gàng, dễ đọc mà còn tăng tính Pythonic trong cách viết. Tái cấu trúc mã là một bước quan trọng để cải thiện hiệu suất và sự rõ ràng của chương trình, giúp bạn và đồng nghiệp dễ dàng bảo trì và mở rộng trong tương lai. Hãy thử áp dụng các mẹo này vào dự án của bạn và cảm nhận sự khác biệt!