Python xử lý thụt đầu dòng như thế nào?

Mọi lập trình viên đã có kinh nghiệm với C/C++/Java [và nhiều hơn thế nữa] đều hiểu nỗi đau mà một người phải trải qua với các Dấu đầu dòng Python bắt buộc

Bây giờ, trước khi bạn cuộn xuống tin rằng đây là một trong những đứa trẻ vị thành niên khóc lóc vì điều gì đó không đáng kể, hãy để tôi nói với bạn rằng đây không phải là một trong những bài viết điển hình 'Tại sao Python Indentation Sucks' tiêu diệt các nhà phát triển ngôn ngữ trái và phải vì đã giới thiệu < . Đây là một bài viết hoàn toàn ngược lại với những gì bạn đề xuất tính năng thụt đầu dòng có thể mong đợi. Vì vậy, chúng ta hãy đi vào chi tiết mà không cần phải quảng cáo thêm

Vì vậy, có gì sai với vết lõm?

Tôi tin rằng hầu hết các bạn, những người đã trải qua một tập lệnh Python với một số lượng lớn các vòng lặp lồng nhau đều đã biết tôi sẽ nói về điều gì. Đối với những người không quen biết, chúng ta hãy xem qua chúng

  1. Khó theo dõi các vết lõm nếu lập trình viên chỉ cung cấp một hoặc hai khoảng trắng cho mỗi mức độ thụt đầu dòng. Cộng đồng phát triển Python khá biết rằng để có thể đọc tốt, khoảng cách tối thiểu cho mỗi mức thụt đầu dòng phải là 4, nhưng có phải mọi người đều thực hành điều đó không?
  2. Gần như không thể tìm ra các ký tự được sử dụng để thụt đầu dòng. Vì vậy, Python cho phép trộn các tab và dấu cách trong khi thụt đầu dòng. Mặc dù bất kỳ nhà phát triển lành mạnh nào cũng không dám bước vào lãnh thổ chưa được khám phá này, nhưng có bao nhiêu người lành mạnh thực sự ở đó? . Bạn thực sự có thể chọn số lượng khoảng trắng và tab mong muốn cho từng cấp độ thụt đầu dòng. Nếu có sự đồng thuận về số khoảng trống tối ưu cho mỗi cấp độ thụt đầu dòng, thì tại sao nó không được thực thi giống như mọi thứ khác? . Điều gì sẽ xảy ra nếu chúng ta buộc phải có chính xác 4 khoảng trắng và không có gì khác trên mỗi cấp độ thụt lề? . Vì vậy, tôi cảm thấy các nhà phát triển đã phải thỏa hiệp. Nhưng với chi phí nào?
  3. Sao chép mã là một cơn ác mộng. Bạn có một dự án lớn cần phát triển và bạn thấy mình bế tắc chỉ vì sao chép mã không tuân theo tiêu chuẩn thụt đầu dòng sẽ phá vỡ cả những gì đang hoạt động? . Một số nhà phát triển Python tuân theo 'tiêu chuẩn riêng' của họ, đó không phải là quy ước thực sự
  4. Quay lại cấp độ trước đó. Vì vậy, bạn vừa hoàn thành vòng lặp bên trong lồng nhau của mình và bây giờ bạn chỉ còn lại một vài dòng mã ở vòng lặp bên ngoài. Khi tệp tập lệnh trở nên đủ dài, không phải lúc nào cũng có thể tìm ra chính xác mức độ thụt đầu dòng trước đó. Một bước sai và mã được cho là được thực thi ở vòng lặp bên ngoài thực sự được thực thi ở vòng lặp bên trong. Chúc may mắn tìm ra nơi bạn đã sai, bởi vì Python có lẽ sẽ không phàn nàn
  5. Mọi thứ có vẻ ổn, nhưng bạn vẫn gặp phải lỗi thụt đầu dòng khét tiếng. . Bạn đã dành hàng giờ để viết một kịch bản Python tại một cuộc thi và ngay khi bạn nghĩ rằng mọi thứ đều đúng thì mọi thứ lại trở nên tồi tệ. Chương trình đúng về mặt ngữ nghĩa và bạn đã kiểm tra ba lần điều đó, nhưng bây giờ Python cung cấp cho bạn lỗi IndentationError chết người. Bạn chỉ còn 5 phút, nhưng bạn vẫn không thể tìm ra mình sai ở đâu với mã thụt lề. Có hợp lý không khi bạn mất điểm chỉ vì bạn không thụt lề mã theo cách mà Python mong đợi?

Làm những lợi ích lớn hơn những sai sót?

Như bạn có thể đã nhận ra bây giờ, họ không. Tôi đã nghe từ nhiều người ủng hộ tính năng này rằng mục đích chính của việc thụt đầu dòng bắt buộc là để hạn chế thói quen xấu là không thụt lề hoàn toàn mã. Nhưng với chi phí nào? . Một số bạn có thể gợi ý rằng hầu hết các IDE phổ biến đều quan tâm đến việc thụt đầu dòng, nhưng còn những người thích viết trên Notepad thì sao [Được rồi, tôi không viết trên trình soạn thảo đáng sợ đó, nhưng đừng quên những người làm như vậy] hoặc

Này em bé đang khóc. Bạn đã hoàn thành ca ngợi về nó?

Vâng, chúng tôi có thể. Trên thực tế, tôi đã cố gắng làm điều gì đó về nó. Nó được gọi là PyBrace. PyBrace là một phần mở rộng của ngôn ngữ Python gốc có thêm hỗ trợ cho dấu ngoặc nhọn. Bạn có thể viết các câu lệnh ghép lồng nhau theo cách bạn mong đợi với các ngôn ngữ khác có hỗ trợ riêng cho dấu ngoặc nhọn. Bạn có thể tham khảo dự án tại đây. https. //github. com/mayank-verma048/PyBrace

Vì vậy, một phiên bản mở rộng của một ngôn ngữ hiện có, phải không?

Bạn chỉ viết mã của mình trong PyBrace. Điều đó không có nghĩa là bạn phải chia sẻ nó trong PyBrace. Bộ công cụ PyBrace cung cấp một tiện ích có tên là pyb, đây là một bộ chuyển mã giúp chuyển đổi mã PyBrace thành tập lệnh vanilla Python. Vì vậy, trong khi bạn có thể viết mã của mình trong PyBrace, những người khác có thể đọc và làm việc với tập lệnh vanilla Python nhờ bộ chuyển mã

Làm thế nào để thụt đầu dòng hoạt động trong Python?

Thụt đầu dòng đề cập đến khoảng trắng ở đầu dòng mã. Trong các ngôn ngữ lập trình khác, phần thụt đầu dòng trong mã chỉ để dễ đọc, thì phần thụt đầu dòng trong Python rất quan trọng. Python sử dụng thụt lề để biểu thị một khối mã .

Python xử lý lỗi thụt lề như thế nào?

Chuyển đến phần cài đặt của trình chỉnh sửa mã của bạn và bật tùy chọn hiển thị tab và khoảng trắng . Khi tính năng này được bật, bạn sẽ thấy các dấu chấm đơn nhỏ ở giữa mã của mình, trong đó mỗi dấu chấm biểu thị khoảng trắng hoặc tab.

Python có nhạy cảm với vết lõm không?

Thụt đầu dòng trong các ngôn ngữ khác như C, C++, v.v. , chỉ để dễ đọc, nhưng trong Python, thẻ thụt đầu dòng là một khái niệm cần thiết và bắt buộc phải tuân theo khi viết mã python; . .

Python có bỏ qua thụt đầu dòng không?

Các tab chỉ nên được sử dụng để duy trì tính nhất quán với mã đã được thụt lề bằng các tab. Python không cho phép trộn các tab và dấu cách để thụt đầu dòng .

Chủ Đề