Hướng dẫn python black use tabs - tab sử dụng trăn đen

Python là một ngôn ngữ có lương tâm của sự liên kết khoảng cách. yêu cầu mà yêu cầu tính nhất quán trong phần bù của các ký tự từ Newlines.

Các tab cho thụt lề là ma quỷ.

Điều này là không biết gì vì nó vô lý

Phím "Tab" được đặt tên vào những năm 1900 và dựa trên các định nghĩa của các từ, tại thời điểm đó.

Vào thời điểm đó để lập bảng là làm cho các từ cách nhau bằng phẳng trong khi thụt vào là tạo hai phần bất bình đẳng trên một tờ. http://webstersdictionary1828.com
to tabulate was to make spaced words flat
while
to indent was to create two inequal sections on a sheet.
http://webstersdictionary1828.com

Vào thời điểm đó, "để thụt vào" văn bản là "để lập bảng"

Tab dừng tạo căn chỉnh, ban đầu cho các bảng toán học.create alignment, originally for mathematical tables.

Python sử dụng căn chỉnh cho các khối mã. Các tab là nhân vật tự nhiên cho mục đích này, không phải không gian.

Hơn nữa, ngay cả các định nghĩa hiện đại cũng cho thấy việc lập bảng và thụt đi đôi với nhau.

Tabulation (chuyển tiếp) để sắp xếp ở dạng bảng; để sắp xếp vào một bàn. (chuyển tiếp) để đặt ra như một danh sách; để liệt kê, để liệt kê. https://en.wiktionary.org/wiki/tabulation
(transitive) To arrange in tabular form; to arrange into a table.
(transitive) To set out as a list; to enumerate, to list.
https://en.wiktionary.org/wiki/tabulate

Tabular (so sánh nhiều bảng hơn, bảng xếp hạng nhất) có bề mặt phẳng, mặt phẳng được tổ chức dưới dạng bảng hoặc danh sách được tính bằng bảng https://en.wiktionary.org/wiki/tabular (comparative more tabular, superlative most tabular)
having a flat, plane surface
organized as a table or list
calculated by means of a table
https://en.wiktionary.org/wiki/tabular

thụt lề (số nhiều) một vết cắt hoặc notch ở rìa của bất cứ thứ gì, hoặc một hốc như một notch. https://en.wiktionary.org/wiki/indent (plural indents)
A cut or notch in the margin of anything, or a recess like a notch.
https://en.wiktionary.org/wiki/indent

Các tab đã ghi nhận văn bản theo một cách, tổ chức và tính toán.

Hơn nữa: thực tế là "chiều dài dòng" có thể định cấu hình trong triết lý của Black nhưng các nhân vật không phù hợp về mặt trí tuệ. Hãy xem xét trở nên nhất quán về mặt trí tuệ trong trường hợp sử dụng này.
The fact that "line length" is configurable in Black's philosophy but characters for indentation is not, is intellectually inconsistent. Please consider becoming intellectually consistent in this use case.

Łukasz Tôi đã chơi với Black một thời gian, và tôi khá chắc chắn rằng, việc nhìn vào mục đích của dự án, bạn sẽ có một vị trí mạnh mẽ về lý do tại sao một cái gì đó có thể được chấp nhận, vì về cơ bản là dự án nêu rõ , Đây là một định dạng mã có quan điểm, phải không?

Trên thực tế, khi tôi nhìn vào đầu ra, điều này là tôi có thể đồng ý về một số định dạng và có thể không thích hoặc không hoàn toàn thoải mái với các tùy chọn định dạng khác. Nhưng hãy đoán xem ... đó là mục tiêu của dự án, để có một tiêu chuẩn có ý kiến ​​mà mọi người có thể hoặc không thích, vì vậy nếu bạn thích nó, bạn sẽ sử dụng nó, và nếu bạn không ... bạn sẽ đi yapf, autopep8 hoặc bất kỳ định dạng nào khác.

Vấn đề là, tôi đã thử nghiệm cá nhân với một số loại định dạng, và một số tùy chọn cho một số định dạng, và màu đen dường như là thứ phù hợp hơn nếu chỉ có một thứ nhỏ, nhỏ .... 4 không gian. Xin đừng trả lời và chịu đựng với tôi trong các đoạn tiếp theo.4 spaces. Please don't reply quite yet and bear with me on the next paragraphs.

Tại thời điểm này, nếu tôi không bỏ lỡ bất cứ điều gì, màu đen, về cơ bản có ba đối số thay đổi đầu ra của chương trình:

  • Chuỗi chuẩn hóa
  • Dấu phẩy cho Python 3.6+
  • chiều dài dòng

Nếu bạn nghĩ về nó, định dạng của mã, văn bản thực tế, biểu thức, lệnh gọi chức năng, định nghĩa, ... chỉ bị ảnh hưởng bởi chuẩn hóa chuỗi và dấu phẩy.

Độ dài dòng ảnh hưởng đến khoảng cách và ảnh hưởng đến thụt lề, nhưng nó không thay đổi quy tắc định dạng. Tại sao tôi nói rằng chiều dài dòng ảnh hưởng đến vết lõm? Về cơ bản bởi vì nếu bạn có độ dài dòng 80 và cuộc gọi hàm có 6 tham số và kết thúc trong cột 95, thì nó sẽ được thụt vào nhiều dòng. Ví dụ, nếu bạn chạy lại màu đen với chiều dài dòng là 100, thì việc thụt vào tập lệnh sẽ thay đổi, nó sẽ phù hợp với một dòng và sẽ không được thụt vào theo cùng một cách. Vẫn là các quy tắc định dạng không thay đổi.

Bây giờ trở lại không gian. Không gian ảnh hưởng đến thụt lề, chúng cũng không ảnh hưởng đến các quy tắc định dạng. Trong những năm qua, tôi đã thấy về cơ bản 2 loại tiêu chuẩn khoảng cách được sử dụng trong các dự án với 3 hương vị mỗi loại:

  • các tab (được cấu hình thành 2, 4 hoặc 8 ký tự)
  • không gian (cũng được cấu hình thành 2, 4, 8)

Trong hầu hết các trường hợp, sử dụng các tab có nhược điểm lớn so với không gian. Hạn chế chính là các trình chỉnh sửa khác nhau với các cấu hình khác nhau có thể hiển thị mã với số lượng không gian khác nhau, do đó khi một lập trình viên mở tệp có độ dài tab khác với lập trình viên gốc, tệp có thể bị hỏng. Vì vậy, tôi hoàn toàn đồng ý về việc đi cho không gian thay vì các tab và buộc lựa chọn đó.

Bây giờ, liên quan đến các tùy chọn khoảng cách khác nhau:

  • 8 không gian: Tôi sẽ không cho phép tùy chọn này, vì sử dụng thụt 8 khoảng trống đang thêm rất nhiều không gian trống trong khi nó không thêm khả năng đọc.
  • 4 không gian: Có thể đọc được và thụt lề không tiêu thụ nhiều không gian như 8 ký tự không gian, vì vậy tôi hiểu rằng một số người đã chọn nó trên 2 không gian.
  • 2 không gian: Có thể đọc được và thụt lề tiêu thụ một nửa không gian theo tùy chọn trước, với tôi đây là số lượng tối thiểu không gian mà một tiêu chuẩn mã hóa nên cho phép.

Mặc dù 4 không gian đã được chọn trên 2, và đó là lý do tại sao màu đen buộc số lượng không gian này ngay từ đầu, tôi thấy không có sự khác biệt nào trong việc có thể chọn khoảng cách so với việc có thể chọn chiều dài dòng. Ý tôi là, nên có mặc định và mặc định có thể là 4 khoảng trắng, như chiều dài dòng là 88, nhưng nếu có tùy chọn để điều chỉnh và tùy chỉnh độ dài dòng, vậy tại sao không có tùy chọn để điều chỉnh khoảng trắng?

Không gian, như độ dài dòng, chỉ thay đổi cách mã sẽ bị thụt vào, nhưng sẽ không thay đổi bất kỳ quy tắc định dạng thực tế nào ...

Để duy trì sự nhất quán, tôi chỉ thấy hai lựa chọn thay thế, để cho phép 2 khoảng trống hoặc loại bỏ hoàn toàn độ dài dòng, vì nếu mọi thứ được quan sát, thì không có lựa chọn nào cho dấu ngoặc hoặc dấu ngoặc Thực tế những thông số tồn tại, và tôi thực sự muốn có thể chọn độ dài dòng. Và tôi hiểu rằng các công ty khác nhau hoặc các dự án khác nhau có thể đã chọn độ dài dòng vì lý do này hay lý do khác (ví dụ: kích thước màn hình khác nhau, truy cập mã thông qua SSH, ...). Và không có tham số nào hiện có thực sự thay đổi cách cuối cùng mã được định dạng. Ngay cả với các trích dẫn chuỗi, mã trông giống nhau, tất cả các ký tự ở cùng một vị trí, chỉ có một trích dẫn được thay thế bằng cách khác.

Bạn có thể vui lòng xem xét lại lý do của bạn vì không cho phép 2 không gian không?

. Nếu cần, tôi cung cấp cho mình tình nguyện viên thực hiện các thay đổi và thêm tham số nếu bạn sẽ xem xét lại và chấp nhận yêu cầu kéo).