Điều gì xảy ra nếu tôi không thụt lề mã python của mình?

Rất nhiều tác giả chỉ trích Python, ngay cả ở đây trên Medium, chỉ ra rằng một trong những vấn đề lớn nhất của Python là các quy tắc thụt lề nghiêm ngặt của nó. Hãy xem xét nếu đây thực sự là trường hợp

Python yêu cầu bạn triển khai một kiểu thụt đầu dòng cụ thể và nó rất nghiêm ngặt về điều đó. Nếu không, bạn có nguy cơ nhận được IndentationError hoặc tệ hơn nữa là nhập sai mã. Các nhà phê bình thích liệt kê các ngôn ngữ khác, như Java, C# hoặc R, cho phép bạn thụt lề mã của mình theo cách bạn muốn và họ nhấn mạnh rằng họ bỏ lỡ sự tự do này đến mức nào trong Python

Tự do thụt đầu dòng có dẫn đến mã Python tốt hơn không?

ví dụ

Hãy xem xét đoạn mã sau

Đó là mã cho mô hình mô phỏng của một ứng dụng chứ không phải của một ứng dụng thực tế, nhưng điều này không thành vấn đề. Tôi không yêu cầu bạn đọc mã chi tiết. Thay vào đó, chỉ cần nhìn vào nó và chú ý đến việc sử dụng dấu ngoặc nhọn và dấu ngoặc nhọn. Hãy chú ý xem bạn có thích kiểu cú pháp không

Vâng, đó là Python. Nhưng đó là một Python khác; . Nhưng tất nhiên, chúng ta không thể đơn giản từ bỏ thụt đầu dòng. Chúng tôi cần một cái gì đó khác để tổ chức mã. Vì vậy, đoạn mã trên sử dụng dấu ngoặc nhọn. Giải pháp này có vẻ như là một ý tưởng tốt. Các ngôn ngữ khác không sử dụng dấu ngoặc nhọn này sử dụng dấu ngoặc nhọn và do đó Python vui lòng xóa-thụt lề khỏi Python của chúng tôi cũng sử dụng chúng

Tất nhiên, điều này không có nghĩa là bạn không được sử dụng thụt lề trong Python mới của chúng tôi. Làm bất cứ điều gì bạn muốn. Bạn muốn sử dụng kiểu thụt đầu dòng thông thường của Python? . Bạn muốn phá vỡ dòng chảy của nó? . Làm bất cứ điều gì bạn muốn, nhưng khi làm như vậy, đừng quên sử dụng dấu ngoặc nhọn. Tự do thụt đầu dòng, chúng ta đến đây

Thật nhẹ nhõm khi chúng ta có thể sử dụng hàm dict() thay vì nghĩa đen của từ điển, {} hoặc từ điển/bộ hiểu. Tôi không chắc rằng có thể dễ dàng phân tích cú pháp mã Python sử dụng dấu ngoặc nhọn cho từ điển và bộ và như một trình thay thế thụt đầu dòng. Không có vấn đề gì với chúng tôi, may mắn thay. Hãy để những người khác lo lắng về điều đó nếu bất kỳ ai quyết định thực sự triển khai Python mới này

Vì chúng tôi rảnh, chúng tôi có thể sử dụng một phong cách khác. Đây là những gì nó trông giống như

Và đây là Python thường xuyên hoạt động

Mã cuối cùng này hoạt động, bạn có thể kiểm tra nó. Tất nhiên, ứng dụng không phù hợp với mô hình thực, chỉ là một số mô hình nhân tạo

Bạn nghĩ sao?

Câu chuyện thụt đầu dòng của tôi

Khi tôi đến với Python, tôi đã sử dụng R được khoảng 16 năm. Mười sáu năm. Mười sáu năm tự do và dấu ngoặc nhọn. tôi đã được tự do. Không ai bắt tôi sử dụng dấu cách hoặc tab và tôi có thể sử dụng tab và dấu cách và bất cứ thứ gì tôi muốn — hoặc thậm chí không cần gì, chỉ cần dấu ngoặc nhọn

Vì vậy, tại sao tôi lại quyết định thay thế sự tự do này bằng các quy tắc nghiêm ngặt của Python?

Có nhiều lý do, nhưng một lý do quan trọng trong số đó là cái mà tôi gọi là vệ sinh cú pháp của Python. Sự thật thì đây là một trong những điều đầu tiên tôi nghĩ về cú pháp của Python, và đối với vấn đề đó, sự thụt đầu dòng. Bạn phải sử dụng thụt lề trong Python và nó làm cho mã rõ ràng. Sạch sẽ và rõ ràng

Đúng chính xác. Sau mười sáu năm sử dụng dấu ngoặc nhọn và rất nhiều kiểu sử dụng chúng khác nhau, tôi đã coi việc thụt đầu dòng của Python là hợp vệ sinh. Điều này có nghĩa là cú pháp rõ ràng;

Bạn không cần phải đồng ý với tôi, nhưng khi tôi nhìn vào ba đoạn mã trên, tôi chắc chắn coi Python thông thường là tốt nhất. Nó hợp vệ sinh. Rõ ràng. Và hai đoạn mã khác, được viết bằng xin-xóa-thụt-lệch-khỏi-Python Python, khiến tôi lo lắng. Tôi không gọi đây là tự do thụt đầu dòng; . Bạn muốn làm gì thì làm, miễn là bạn nhớ sử dụng đúng dấu ngoặc nhọn. Không, điều này không làm việc cho tôi. Tôi không muốn thấy tình trạng hỗn loạn thụt lề trong mã Python; . Làm ơn giữ vệ sinh cho Python

Phần kết luận

Có gì sai với vết lõm? . Có thật không? . IndentationError khét tiếng?

Tôi cũng nghe nói thụt lề là không tốt vì nhà phát triển có thể trộn lẫn các tab và dấu cách. Nhưng tại sao mọi người sẽ trộn chúng? . Nhưng cho dù bạn làm việc với ngôn ngữ nào trong nhóm, bạn nên tạo một hướng dẫn về phong cách và tất cả nên tuân theo nó. Điều này một mình là đủ để giải quyết vấn đề thụt đầu dòng cụ thể này. Hoặc, bạn chỉ cần sử dụng black hoặc một công cụ tương tự

Thành thật mà nói, tôi không hiểu toàn bộ sự ác cảm này đối với sự thụt đầu dòng. Đối với tôi, đó là một điều tuyệt vời. Nó làm cho mã Python trở nên hợp vệ sinh, sạch sẽ, rõ ràng. Khoảng trắng bổ sung làm cho mã ít lộn xộn hơn và được tổ chức tốt hơn. Và tôi nhớ mớ hỗn độn mà tôi phải vật lộn khi sử dụng dấu ngoặc nhọn của R. Không vệ sinh, không trật tự, chỉ là một mớ hỗn độn trừ khi một nhóm chọn một phong cách cụ thể và tuân theo nó, nhưng sau đó tất cả những dấu ngoặc nhọn đóng lại if-khối, vòng lặp, chức năng, v.v. Cảm ơn bạn rất nhiều. Tôi thích bốn không gian hơn

Tôi xin nhắc lại rằng tôi hiểu và chấp nhận rằng bạn có thể có ý kiến ​​khác. Bạn chọn ghét sự thụt đầu dòng của Python, tôi ổn thôi. Nhưng làm ơn, đừng nói rằng Python không phải là ngôn ngữ lập trình tốt nhất vì thụt đầu dòng

“Một điểm cần lưu ý là thụt đầu dòng không phải là tùy chọn trong Python. Điều này đặt ra một vấn đề khi sử dụng các điều kiện. Ngoài ra, thụt đầu dòng làm cho khó nhìn thấy nơi chức năng kết thúc. ”

Có thật không?

Tôi nghĩ đã đến lúc ghi công cho vết lõm. Tôi nghĩ rằng sự đơn giản của mã Python đến từ nhiều lý do khác nhau và một trong số đó không gì khác hơn là chính sự thụt đầu dòng

Cảm ơn vì đã dành thời gian này với tôi. Tôi sẽ rất vui khi biết suy nghĩ của bạn về chủ đề gây tranh cãi đáng ngạc nhiên này, vì vậy hãy chia sẻ suy nghĩ của bạn trong phần bình luận

Bạn có nghĩ phong cách thụt đầu dòng của Python là thuận lợi hay bất lợi?

Bạn có nghĩ Python sẽ hoạt động tốt hơn nếu không có nó, thay vào đó sử dụng dấu ngoặc nhọn không?

Có lẽ, bạn có đồng ý với tôi rằng thụt đầu dòng là lợi thế của Python, sức mạnh tuyệt vời của nó và điều gì làm cho mã của nó hợp vệ sinh không?

Việc thụt đầu dòng có cần thiết trong chương trình Python không?

Trong các ngôn ngữ lập trình khác, việc thụt đầu dòng trong mã chỉ để cho dễ đọc, việc thụt đầu dòng trong Python là rất quan trọng . Python sử dụng thụt đầu dòng để chỉ ra một khối mã.

Việc thụt đầu dòng có quan trọng trong vòng lặp Python không?

Python quan tâm rất nhiều đến thụt đầu dòng. Bạn sẽ thấy điều này thường xuyên trong mã Python. vòng lặp for là một trong nhiều vị trí mà Python phụ thuộc vào việc thụt lề . Dấu thụt lề cho Python biết câu lệnh nào nằm trong vòng lặp và câu lệnh nào nằm ngoài vòng lặp.

Việc thụt đầu dòng có ảnh hưởng đến mã không?

Kích thước thụt lề mà bạn sử dụng có hai tác động đáng kể đến mã nguồn của bạn . Một hiệu ứng chính là rõ ràng ngay lập tức - sự dễ dàng mà bạn nhanh chóng quét qua mã.

Tại sao việc thụt lề mã của bạn lại quan trọng?

Trong ngôn ngữ lập trình máy tính, định dạng thụt đầu dòng mã nguồn chương trình để cải thiện khả năng đọc . Ngôn ngữ lập trình sử dụng thụt đầu dòng để xác định cấu trúc chương trình. Các lập trình viên sử dụng thụt lề để hiểu cấu trúc chương trình của họ cho người đọc.