Hướng dẫn how do you continue a line in python? - làm thế nào để bạn tiếp tục một dòng trong python?

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

  • Giới thiệu về tiếp tục dòng Python
  • Bắt đầu với tiếp tục dòng Python
  • Các vấn đề với dấu ngoặc kép đơn, gấp đôi và ba
    • Ví dụ về các vấn đề với các điểm đơn và đôi
    • Ví dụ về vấn đề với dấu ngoặc kép ba
  • Tiếp tục dòng Python với toán tử phá vỡ dòng rõ ràng
    • Ví dụ với toán tử phá vỡ dòng rõ ràng
    • Ví dụ về số nguyên và phao với toán tử phá vỡ dòng rõ ràng
  • Tiếp tục dòng Python với giá đỡ []
    • Sự tiếp tục dòng Python của các chuỗi bằng cách sử dụng dấu ngoặc
    • Tiếp tục dòng Python của số nguyên và phao sử dụng giá đỡ
  • Bản tóm tắt
  • Đọc thêm

Giới thiệu về tiếp tục dòng Python

Bắt đầu với tiếp tục dòng Python

Các vấn đề với dấu ngoặc kép đơn, gấp đôi và ba

Bắt đầu với tiếp tục dòng Python

Các vấn đề với dấu ngoặc kép đơn, gấp đôi và ba

Các vấn đề với dấu ngoặc kép đơn, gấp đôi và ba

Ví dụ về các vấn đề với các điểm đơn và đôi

Ví dụ về các vấn đề với các điểm đơn và đôi

Ví dụ về vấn đề với dấu ngoặc kép ba

# defining string value inside double quotation marks
mystring = "Wellcome to
        golinux, 
        here you can find
        programming tutorials"
# printing
print[mystring]

Output:

File "/home/uca/Downloads/python/main.py", line 2
          mystring = "Wellcome to
                                                 ^
SyntaxError: EOL while scanning string literal

Tiếp tục dòng Python với toán tử phá vỡ dòng rõ ràng

Ví dụ với toán tử phá vỡ dòng rõ ràng

Ví dụ về vấn đề với dấu ngoặc kép ba

Tiếp tục dòng Python với toán tử phá vỡ dòng rõ ràng

# defining string value inside triple quotation marks
mystring = '''Wellcome to
golinuxcloud, 
here you can find
programming tutorials'''
# printing
print[mystring]

Output:

Wellcome to
golinuxcloud,
here you can find
programming tutorials

Ví dụ với toán tử phá vỡ dòng rõ ràng

Tiếp tục dòng Python với toán tử phá vỡ dòng rõ ràng

Ví dụ với toán tử phá vỡ dòng rõ ràng

Ví dụ với toán tử phá vỡ dòng rõ ràng

Ví dụ về số nguyên và phao với toán tử phá vỡ dòng rõ ràng

# defining string value inside single quotation marks
mystring1 = 'Wellcome to \
golinux, \
here you can find \
programming tutorials'
# defining string value inside double quotation marks
mystring2 = "Wellcome to \
golinux, \
here you can find \
programming tutorials"
# printing
print[mystring1]
print[mystring2]

Output:

Wellcome to golinux, here you can find programming tutorials
Wellcome to golinux, here you can find programming tutorials

Lưu ý rằng lần này chúng tôi không gặp bất kỳ lỗi nào và đầu ra nằm trong một dòng vì toán tử tiếp tục dòng mà chúng tôi đã sử dụng. Đầu ra tương tự sẽ là cho các dấu ngoặc kép ba. Xem ví dụ 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

Output:

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

Lưu ý rằng ngay cả chúng tôi đã sử dụng các dấu ngoặc kép ba, nhưng đầu ra vẫn nằm trong một dòng vì toán tử tiếp tục dòng.

Ví dụ về số nguyên và phao với toán tử phá vỡ dòng rõ ràng

Cho đến nay chúng tôi đã lấy ví dụ về chuỗi. Chúng ta hãy lấy một ví dụ về số nguyên và thêm các số lại với nhau từ một dòng khác. Xem ví dụ 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[]]
2

Output:

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ưu ý rằng chúng tôi có thể thêm các số trong các dòng khác nhau bằng cách sử dụng toán tử tiếp tục dòng Python. Điều tương tự cũng sẽ được áp dụng cho các điểm nổi là tốt. Xem ví dụ 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[]]
4

Output:

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[]]
5

Lưu ý rằng đầu ra cũng là một số nổi có được bằng cách thêm các số khác nhau từ các dòng khác nhau.

Tiếp tục dòng Python với giá đỡ []

Một phương pháp khác có thể được sử dụng cho tiếp tục dòng Python là đặt các dòng bên trong ____ 23. & nbsp; Chúng tôi sẽ viết các chuỗi hoặc các số nguyên bên trong các dấu ngoặc này theo nhiều dòng và kết quả sẽ chỉ là một dòng. Trong phần này, chúng tôi sẽ lấy các ví dụ khác nhau bằng cách sử dụng dấu ngoặc để tiếp tục dòng Python.

Sự tiếp tục dòng Python của các chuỗi bằng cách sử dụng dấu ngoặc

Bây giờ chúng ta hãy lấy một ví dụ và xem làm thế nào chúng ta có thể sử dụng dấu ngoặc để tiếp tục dòng trong Python. Xem ví dụ 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[]]
6

Output:

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[]]
7

Lưu ý rằng bằng cách sử dụng dấu ngoặc và toán tử bổ sung, chúng tôi có thể viết nhiều dòng chuỗi trong một dòng làm đầu ra.

Tiếp tục dòng Python của số nguyên và phao sử dụng giá đỡ

Bây giờ chúng ta hãy lấy một ví dụ về kiểu dữ liệu số nguyên và xem cách chúng ta có thể sử dụng dấu ngoặc để thêm các số từ các dòng khác nhau. Xem chương trình Python 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[]]
8

Output:

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[]]
9

Lưu ý rằng chúng tôi nhận được tổng số các số trong các dòng khác nhau. Điều tương tự là với các số nổi. Xem ví dụ dưới đây:

# Yes: easy to match operators with operands
0

Output:

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[]]
5

Lưu ý rằng một khoản tiền một lần nữa là một số nổi.

Bản tóm tắt

Giả sử rằng chúng ta có một dòng dài rất khó đọc, vì vậy chúng ta muốn chia nó thành nhiều dòng mà không thực sự tạo ra các dòng mới. Trong Python, chúng tôi có các kỹ thuật khác nhau để thực hiện tiếp tục dòng. Trong hướng dẫn này, chúng tôi đã tìm hiểu về loại lỗi có thể xảy ra nếu chúng tôi chỉ sử dụng dấu ngoặc kép và viết một câu dài theo nhiều dòng.

Sau đó, chúng tôi đã thảo luận về hai cách khác nhau để thực hiện các đường nét dài bằng cách sử dụng toán tử ngược, còn được gọi là toán tử tiếp tục dòng và dấu ngoặc '[]' cũng có thể được sử dụng cho mục đích tương tự trong Python bằng cách lấy các ví dụ khác nhau.

Đọc thêm

Python Line Contening Python Doc String trong Python Python được xây dựng trong các phương pháp
Python doc strings in Python
Python built in methods

Bài Viết Liên Quan

Chủ Đề