Hướng dẫn python line continuation string - chuỗi tiếp tục dòng python

Từ PEP 8 - Hướng dẫn kiểu cho mã Python:

Nội dung chính

  • Không phải là câu trả lời bạn đang tìm kiếm? Duyệt các câu hỏi khác được gắn thẻ phá vỡ dòng Python hoặc đặt câu hỏi của riêng bạn.
  • Làm thế nào để bạn đặt nhiều dòng vào một mã?
  • Làm thế nào để bạn viết những dòng dài trong 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. 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. 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:after the operator, not before it. Some examples: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.before a binary operator aligns operators vertically, thus reducing the eye's workload when determining which items are added and subtracted.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

Giống như C, bạn có thể chia một dòng dài thành nhiều dòng ngắn. Nhưng trong Python, nếu tôi làm điều này, sẽ có một lỗi thụt lề ... có thể không?

Nội phân chính

  • Không phải là câu trả lời bạn đang tìm kiếm? Duyệt các câu hỏi khác được gắn thẻ phá vỡ dòng Python hoặc đặt câu hỏi của riêng bạn.
  • Làm thế nào để bạn đặt nhiều dòng vào một mã?
  • Làm thế nào để bạn viết những dòng dài trong 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. 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.Nov 13, 2010 at 12:17

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:Bin Chen

Một trường hợp như vậy là với các tuyên bố khẳng định.53 gold badges139 silver badges182 bronze badges

1

Từ PEP 8 - Hướng dẫn kiểu cho mã Python:

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:after the operator, not before it. Some examples:

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.

a = some_function(
    '1' + '2' + '3' - '4')

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.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:

a = '1'   \
    + '2' \
    + '3' \
    - '4'

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.Nov 13, 2010 at 12:20Nov 13, 2010 at 12:20

[3]: The Texbook của Donald Knuth, trang 195 và 196Darin DimitrovDarin Dimitrov

Giống như C, bạn có thể chia một dòng dài thành nhiều dòng ngắn. Nhưng trong Python, nếu tôi làm điều này, sẽ có một lỗi thụt lề ... có thể không?266 gold badges3249 silver badges2911 bronze badges266 gold badges3249 silver badges2911 bronze badges

3

Nội phân chính

Đã hỏi ngày 13 tháng 11 năm 2010 lúc 12:17Nov 13, 2010 at 12:17

>>> def print_something():
         print 'This is a really long line,', \
               'but we can make it across multiple lines.'

Bin Chenbin ChenBin Chen

>>> def print_something():
        print ('Wow, this also works?',
               'I never knew!')

59.1K53 Huy hiệu vàng139 Huy hiệu bạc182 Huy hiệu Đồng53 gold badges139 silver badges182 bronze badges

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())
4:
>>> x = 10
>>> if x == 10 or x > 0 or \
       x < 100:
       print 'True'

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. Nếu cần thiết, bạn có thể thêm một cặp dấu ngoặc đơn xung quanh một biểu thức, nhưng đôi khi sử dụng dấu gạch chéo ngược trông tốt hơn. Hãy chắc chắn để thụt dòng dòng tiếp tục một cách thích hợp.

Ví dụ về tiếp tục dòng ẩn:

Đã trả lời ngày 13 tháng 11 năm 2010 lúc 12:26Nov 13, 2010 at 12:26Nov 13, 2010 at 12:26Nov 13, 2010 at 12:26

user225312user225312user225312user225312user225312

120K66 Huy hiệu vàng167 Huy hiệu bạc181 Huy hiệu Đồng66 gold badges167 silver badges181 bronze badges66 gold badges167 silver badges181 bronze badges66 gold badges167 silver badges181 bronze badges

6

Nếu bạn muốn gán một chuỗi dài cho biến, bạn có thể làm điều đó như dưới đây:

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())
0

Không thêm bất kỳ dấu phẩy nào, hoặc bạn sẽ nhận được một tuple chứa nhiều chuỗi!

Đã trả lời ngày 27 tháng 4 năm 2016 lúc 7:17Apr 27, 2016 at 7:17Apr 27, 2016 at 7:17Apr 27, 2016 at 7:17

3

Nó cũng hoạt động trong Python:

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())
0

Đã trả lời ngày 13 tháng 11 năm 2010 lúc 12:20Nov 13, 2010 at 12:20Nov 13, 2010 at 12:20Nov 13, 2010 at 12:20

Darin Dimitrovdarin DimitrovAbyxAbyxAbyx

1.0M266 Huy hiệu vàng3249 Huy hiệu bạc2911 Huy hiệu Đồng5 gold badges41 silver badges75 bronze badges5 gold badges41 silver badges75 bronze badges5 gold badges41 silver badges75 bronze badges

Có nhiều hơn một cách để làm điều đó.

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())
21

1). Một tuyên bố dài:

2). Sử dụng dấu ngoặc đơn:

>>> def print_something():
        print ('Wow, this also works?',
               'I never knew!')
Jul 6, 2016 at 13:11Jul 6, 2016 at 13:11Jul 6, 2016 at 13:11

3). Sử dụng 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())
4:kotbegkotbegkotbeg

Trích dẫn PEP8:1 silver badge4 bronze badges1 silver badge4 bronze badges1 silver badge4 bronze badges

1

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. Nếu cần thiết, bạn có thể thêm một cặp dấu ngoặc đơn xung quanh một biểu thức, nhưng đôi khi sử dụng dấu gạch chéo ngược trông tốt hơn. 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ó.

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

Đã trả lời ngày 13 tháng 11 năm 2010 lúc 12:26

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

120K66 Huy hiệu vàng167 Huy hiệu bạc181 Huy hiệu ĐồngSep 20, 2017 at 15:40Sep 20, 2017 at 15:40Sep 20, 2017 at 15:40

2

Nếu bạn muốn gán một chuỗi dài cho biến, bạn có thể làm điều đó như dưới đây:

Không thêm bất kỳ dấu phẩy nào, hoặc bạn sẽ nhận được một tuple chứa nhiều chuỗi!Nov 13, 2010 at 12:22

1

Đã trả lời ngày 27 tháng 4 năm 2016 lúc 7:17Apr 27, 2016 at 7:17Apr 27, 2016 at 7:17

Nó cũng hoạt động trong Python:

Đã trả lời ngày 13 tháng 11 năm 2010 lúc 12:20Nov 13, 2010 at 12:20Nov 13, 2010 at 12:20Use the line-continuation character, which is an underscore ( _ ), at the point at which you want the line to break.

Darin Dimitrovdarin DimitrovAbyxAbyx

1.0M266 Huy hiệu vàng3249 Huy hiệu bạc2911 Huy hiệu Đồng5 gold badges41 silver badges75 bronze badges5 gold badges41 silver badges75 bronze badgesusing Python's implied line continuation inside parentheses, brackets and braces. If necessary, you can add an extra pair of parentheses around an expression, but sometimes using a backslash looks better. Make sure to indent the continued line appropriately.