Từ PEP 8 - Hướng dẫn kiểu cho mã Python:
Cách ưa thích để gói các đường dài là bằng cách sử dụng tiếp tục dòng ngụ ý của Python bên trong ngoặc đơn, ngoặc và thanh giằng. Các đường dài có thể được phá vỡ trên nhiều dòng bằng cách gói các biểu thức trong ngoặc đơn. Chúng nên được sử dụng theo sở thích để sử dụng dấu gạch chéo ngược để tiếp tục dòng. Long lines can be broken over multiple lines by wrapping expressions in parentheses. These should be used in preference to using a backslash for line continuation.
Backslashes vẫn có thể phù hợp đôi khi. Ví dụ, dài, nhiều người không thể sử dụng tiếp tục ngầm, do đó, các dấu gạch chéo ngược có thể chấp nhận được:
with open['/path/to/some/file/you/want/to/read'] as file_1, \ open['/path/to/some/file/being/written', 'w'] as file_2: file_2.write[file_1.read[]]
Một trường hợp như vậy là với các tuyên bố khẳng định.
Hãy chắc chắn để thụt dòng dòng tiếp tục một cách thích hợp. Nơi ưa thích để phá vỡ một toán tử nhị phân là sau người vận hành, không phải trước nó. Vài ví dụ:after the operator, not before it. Some examples:
class Rectangle[Blob]: def __init__[self, width, height, color='black', emphasis=None, highlight=0]: if [width == 0 and height == 0 and color == 'red' and emphasis == 'strong' or highlight > 100]: raise ValueError["sorry, you lose"] if width == 0 and height == 0 and [color == 'red' or emphasis is None]: raise ValueError["I don't think so -- values are %s, %s" % [width, height]] Blob.__init__[self, width, height, color, emphasis, highlight]file_2.write[file_1.read[]]
PEP8 hiện khuyến nghị quy ước ngược lại [để phá vỡ các hoạt động nhị phân] được sử dụng bởi các nhà toán học và các nhà xuất bản của họ để cải thiện khả năng đọc.
Phong cách phá vỡ của Donald Knuth trước một toán tử nhị phân sắp xếp các toán tử theo chiều dọc, do đó làm giảm khối lượng công việc của mắt khi xác định các mục nào được thêm và trừ.before a binary operator aligns operators vertically, thus reducing the eye's workload when determining which items are added and subtracted.
Từ PEP8: nên phá vỡ dòng trước hay sau khi vận hành nhị phân?:
Donald Knuth giải thích quy tắc truyền thống trong các máy tính và loạt sắp chữ của mình: "Mặc dù các công thức trong một đoạn văn luôn bị phá vỡ sau khi hoạt động và quan hệ nhị phân, các công thức hiển thị luôn bị phá vỡ trước khi hoạt động nhị phân" [3].
Theo truyền thống từ toán học thường dẫn đến mã dễ đọc hơn:
# Yes: easy to match operators with operands
income = [gross_wages
+ taxable_interest
+ [dividends - qualified_dividends]
- ira_deduction
- student_loan_interest]
Trong mã Python, được phép phá vỡ trước hoặc sau một toán tử nhị phân, miễn là quy ước là nhất quán tại địa phương. Đối với phong cách mới của mã Knuth được đề xuất.
[3]: The Texbook của Donald Knuth, trang 195 và 196
Khi sử dụng các trình kiểm tra mã PEP8 như Flake8 trong Python, một lỗi,
class Rectangle[Blob]:
def __init__[self, width, height,
color='black', emphasis=None, highlight=0]:
if [width == 0 and height == 0 and
color == 'red' and emphasis == 'strong' or
highlight > 100]:
raise ValueError["sorry, you lose"]
if width == 0 and height == 0 and [color == 'red' or
emphasis is None]:
raise ValueError["I don't think so -- values are %s, %s" %
[width, height]]
Blob.__init__[self, width, height,
color, emphasis, highlight]file_2.write[file_1.read[]]
2, được nêu ra khi một dòng vượt quá 80 ký tự.Bài viết này mô tả cách viết một chuỗi dài không chứa một dòng mới trên nhiều dòng.
- Sử dụng dấu gạch chéo ngược [
3] làm ký tự tiếp tục dòngclass Rectangle[Blob]: def __init__[self, width, height, color='black', emphasis=None, highlight=0]: if [width == 0 and height == 0 and color == 'red' and emphasis == 'strong' or highlight > 100]: raise ValueError["sorry, you lose"] if width == 0 and height == 0 and [color == 'red' or emphasis is None]: raise ValueError["I don't think so -- values are %s, %s" % [width, height]] Blob.__init__[self, width, height, color, emphasis, highlight]file_2.write[file_1.read[]]
- Sử dụng dấu ngoặc đơn
Xem bài viết sau đây cho các hoạt động khác nhau liên quan đến các chuỗi với các lần ngắt dòng.
- Xử lý các lần phá vỡ dòng [Newlines] trong Python
Nếu bạn muốn bọc hoặc cắt các chuỗi dài, mô -đun TextWrap rất hữu ích. Xem bài viết sau đây.
- Bọc và cắt ngắn một chuỗi với textwrap trong python
Nếu số lượng ký tự trong một dòng trở nên quá dài do chuỗi phương thức, bạn có thể phá vỡ dòng theo cùng một cách.
- Chuỗi phương pháp với sự phá vỡ dòng trong Python
Sử dụng dấu gạch chéo ngược [class Rectangle[Blob]:
def __init__[self, width, height,
color='black', emphasis=None, highlight=0]:
if [width == 0 and height == 0 and
color == 'red' and emphasis == 'strong' or
highlight > 100]:
raise ValueError["sorry, you lose"]
if width == 0 and height == 0 and [color == 'red' or
emphasis is None]:
raise ValueError["I don't think so -- values are %s, %s" %
[width, height]]
Blob.__init__[self, width, height,
color, emphasis, highlight]file_2.write[file_1.read[]]
3] làm ký tự tiếp tục dòng
class Rectangle[Blob]:
def __init__[self, width, height,
color='black', emphasis=None, highlight=0]:
if [width == 0 and height == 0 and
color == 'red' and emphasis == 'strong' or
highlight > 100]:
raise ValueError["sorry, you lose"]
if width == 0 and height == 0 and [color == 'red' or
emphasis is None]:
raise ValueError["I don't think so -- values are %s, %s" %
[width, height]]
Blob.__init__[self, width, height,
color, emphasis, highlight]file_2.write[file_1.read[]]
Xem bài viết sau đây cho các hoạt động khác nhau liên quan đến các chuỗi với các lần ngắt dòng.
n = 1 + 2 \
+ 3
print[n]
# 6
Xử lý các lần phá vỡ dòng [Newlines] trong Python
s = 'aaa' 'bbb'
print[s]
# aaabbb
Nếu bạn muốn bọc hoặc cắt các chuỗi dài, mô -đun TextWrap rất hữu ích. Xem bài viết sau đây.
s = '//ja.wikipedia.org/wiki/'\
'%E3%83%97%E3%83%AD%E3%82%B0%E3%83'\
'%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E'
print[s]
# //ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E
Bọc và cắt ngắn một chuỗi với textwrap trong python
s_var = 'xxx'
# s = 'aaa' s_var 'bbb'
# SyntaxError: invalid syntax
Nếu số lượng ký tự trong một dòng trở nên quá dài do chuỗi phương thức, bạn có thể phá vỡ dòng theo cùng một cách.
s = 'aaa' + s_var + 'bbb'
print[s]
# aaaxxxbbb
Chuỗi phương pháp với sự phá vỡ dòng trong Python
s = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'\
+ s_var\
+ 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'
print[s]
# aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxxxbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
Trong Python, một dấu gạch chéo ngược [
class Rectangle[Blob]:
def __init__[self, width, height,
color='black', emphasis=None, highlight=0]:
if [width == 0 and height == 0 and
color == 'red' and emphasis == 'strong' or
highlight > 100]:
raise ValueError["sorry, you lose"]
if width == 0 and height == 0 and [color == 'red' or
emphasis is None]:
raise ValueError["I don't think so -- values are %s, %s" %
[width, height]]
Blob.__init__[self, width, height,
color, emphasis, highlight]file_2.write[file_1.read[]]
3] là một nhân vật tiếp tục dòng. Nếu một dấu gạch chéo ngược được đặt ở cuối một dòng, người ta coi là dòng được tiếp tục trên dòng tiếp theo.- Chuỗi Concatenate trong Python [+ toán tử, tham gia, v.v.]
Sử dụng dấu ngoặc đơn
Trong Python, bạn có thể tự do phá vỡ dòng trong ngoặc đơn [
# Yes: easy to match operators with operands
1, # Yes: easy to match operators with operands
2, # Yes: easy to match operators with operands
3]. Sử dụng quy tắc này, bạn có thể viết một chuỗi dài trên nhiều dòng với dấu ngoặc đơn thay vì dấu gạch chéo ngược.Vì
# Yes: easy to match operators with operands
2 được sử dụng cho # Yes: easy to match operators with operands
5 và # Yes: easy to match operators with operands
3 được sử dụng cho # Yes: easy to match operators with operands
7, sử dụng # Yes: easy to match operators with operands
1 cho mục đích đó. Lưu ý rằng # Yes: easy to match operators with operands
9 được tạo bởi dấu phẩy, không phải # Yes: easy to match operators with operands
1.- Một tuple với một yếu tố yêu cầu một dấu phẩy trong Python
Bạn có thể viết như sau.
class Rectangle[Blob]:
def __init__[self, width, height,
color='black', emphasis=None, highlight=0]:
if [width == 0 and height == 0 and
color == 'red' and emphasis == 'strong' or
highlight > 100]:
raise ValueError["sorry, you lose"]
if width == 0 and height == 0 and [color == 'red' or
emphasis is None]:
raise ValueError["I don't think so -- values are %s, %s" %
[width, height]]
Blob.__init__[self, width, height,
color, emphasis, highlight]file_2.write[file_1.read[]]
0Nếu các biến được bao gồm, bạn cần toán tử
class Rectangle[Blob]:
def __init__[self, width, height,
color='black', emphasis=None, highlight=0]:
if [width == 0 and height == 0 and
color == 'red' and emphasis == 'strong' or
highlight > 100]:
raise ValueError["sorry, you lose"]
if width == 0 and height == 0 and [color == 'red' or
emphasis is None]:
raise ValueError["I don't think so -- values are %s, %s" %
[width, height]]
Blob.__init__[self, width, height,
color, emphasis, highlight]file_2.write[file_1.read[]]
8.class Rectangle[Blob]:
def __init__[self, width, height,
color='black', emphasis=None, highlight=0]:
if [width == 0 and height == 0 and
color == 'red' and emphasis == 'strong' or
highlight > 100]:
raise ValueError["sorry, you lose"]
if width == 0 and height == 0 and [color == 'red' or
emphasis is None]:
raise ValueError["I don't think so -- values are %s, %s" %
[width, height]]
Blob.__init__[self, width, height,
color, emphasis, highlight]file_2.write[file_1.read[]]
1