Incomplete documentation of zero preceding width in format specification
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Python
- Star
- 77.2k
- Fork
- 35.9k
- Chỉ số merge pull request
- Chỉ số pull request đang chờ
Mô tả
The current description of zero preceding width in format is the following:
When no explicit alignment is given, preceding the width field by a zero ('0') character enables sign-aware zero-padding for numeric types, excluding complex. This is equivalent to a fill character of '0' with an alignment type of '='.
This is not complete. Consider the next code snippet:
formats = (
' <+#20.0f',
'<+#20.0f',
'+#20.0f',
' <+#020.0f',
'<+#020.0f',
'+#020.0f',
)
for fmt in formats:
print(f'Format {fmt!r:>12}: {format(1, fmt)!r}')
It has the following output:
Format ' <+#20.0f': '+1. '
Format '<+#20.0f': '+1. '
Format '+#20.0f': ' +1.'
Format ' <+#020.0f': '+1. '
Format '<+#020.0f': '+1.00000000000000000'
Format '+#020.0f': '+000000000000000001.'
The first three lines do not precede width of 20 with zero, remaining three do. Lines 4 and 5 show that one can precede width with zero even if alignment is specified. Specifically:
- If both fill char and alignment are present, then zero is ignored.
- If only alignment is present, then zero sets omitted fill char to
0(omitting fill char by default uses space as demonstrated by line 2).
Those two cases are not covered; line 6 shows the case covered by docs.
Present docs excludes complex numbers, but it is a bit tricky. One can precede width with zero only if both fill char and alignment are present (i.e., when it is ignored), otherwise an exception is raised. This case can be completely omitted as the same exception also happens when fill char itself is zero (f'{1+1j:0<+#20.0f}'). Instead, the fact that complex numbers cannot be zero-padded should be added to the description of fill char.
Linked PRs
- gh-132149
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Bắt đầu với tài liệu đặc tả định dạng được mô tả trong issue và so sánh cách diễn đạt về độ rộng bằng không với ví dụ Python được cung cấp. Cập nhật phần giải thích về các kết hợp ký tự điền và căn chỉnh được chỉ định rõ ràng, đồng thời làm rõ giới hạn đối với số phức, sau đó xác minh rằng các trường hợp được ghi trong tài liệu khớp với đầu ra được hiển thị.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- python
- Lĩnh vực
- documentation
- Loại issue
- Tài liệu
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 35/100