Hướng dẫn how do you break a long line of code in python? - làm thế nào để bạn ngắt một dòng mã dài trong python?

Đăng nhập vào tài khoản Python Barsels của bạn để lưu cài đặt screencast của bạn.

Vẫn chưa có tài khoản? Đăng ký tại đây.

Hãy nói về việc phá vỡ các dòng mã dài trong Python.

Cách tiếp tục mã trên dòng tiếp theo

Câu lệnh nhập dưới đây dài hơn tôi muốn cho một dòng liên tục duy nhất:

from collections.abc import Hashable, Iterable, KeysView, Mapping, MutableMapping, Set

Lưu ý từ Trey: Tôi thường sử dụng chiều dài dòng tối đa 79 ký tự trong các dự án của mình (mặc dù điều này thực sự thay đổi từ dự án này sang dự án khác).

Chúng ta có thể chia dòng này thành hai bằng cách đặt dấu gạch chéo ngược (

from collections.abc import Hashable, Iterable, KeysView, Mapping, \
        MutableMapping, Set
3) ở cuối dòng và sau đó nhấn phím
from collections.abc import Hashable, Iterable, KeysView, Mapping, \
        MutableMapping, Set
4:

from collections.abc import Hashable, Iterable, KeysView, Mapping, \
        MutableMapping, Set

Đây là một cách để nói với Python rằng dòng mã đầu tiên tiếp tục vào dòng tiếp theo. Điều này hoạt động trong Python nhưng nó không được khuyến khích.it's not recommended.

Thay vào đó, Hướng dẫn kiểu Python (PEP 8) khuyến nghị sử dụng tiếp tục dòng ẩn. Việc tiếp tục dòng ngầm xảy ra bất cứ khi nào Python đi đến cuối dòng mã và thấy rằng có nhiều thứ sẽ đến vì dấu ngoặc đơn (

from collections.abc import Hashable, Iterable, KeysView, Mapping, \
        MutableMapping, Set
5), khung vuông (
from collections.abc import Hashable, Iterable, KeysView, Mapping, \
        MutableMapping, Set
6) hoặc nẹp xoăn (
from collections.abc import Hashable, Iterable, KeysView, Mapping, \
        MutableMapping, Set
7) đã được mở.implicit line continuation happens whenever Python gets to the end of a line of code and sees that there's more to come because a parenthesis (
from collections.abc import Hashable, Iterable, KeysView, Mapping, \
        MutableMapping, Set
5), square bracket (
from collections.abc import Hashable, Iterable, KeysView, Mapping, \
        MutableMapping, Set
6) or curly brace (
from collections.abc import Hashable, Iterable, KeysView, Mapping, \
        MutableMapping, Set
7) has been left open.

Vì vậy, việc thêm dấu ngoặc đơn (

from collections.abc import Hashable, Iterable, KeysView, Mapping, \
        MutableMapping, Set
5 và
from collections.abc import Hashable, Iterable, KeysView, Mapping, \
        MutableMapping, Set
9) vào dòng này sẽ cho phép chúng tôi đặt Newlines bất cứ nơi nào chúng tôi muốn bên trong các dấu ngoặc đơn đó:

from collections.abc import (
    Hashable,Iterable, KeysView, Mapping,
        MutableMapping, Set)

Căn chỉnh là một sở thích cá nhân

Khi gói mã trên nhiều dòng, một số lập trình viên Python thích xếp hàng mã của họ một cách trực quan như thế này:

from collections.abc import (Hashable, Iterable, KeysView, Mapping,
                             MutableMapping, Set)

Nhưng một số lập trình viên Python thay vào đó đặt từng mục trên dòng riêng của mình:

from collections.abc import (
    Hashable,
    Iterable,
    KeysView,
    Mapping,
    MutableMapping,
    Set,
)

Tuy nhiên, bạn chọn phá vỡ các dòng của mình, hãy biết rằng trong ngoặc đơn, bạn có thể đặt các lần ngắt dòng bất cứ nơi nào bạn muốn vào mã của mình và bạn có thể đặt bất kỳ khoảng trắng nào bạn muốn bên trong dấu ngoặc đơn:

from collections.abc import (Hashable,
    Iterable, KeysView, Mapping,
                             MutableMapping, Set)

Khoảng cách kỳ lạ ở trên hoạt động vì đây không phải là thụt lề, đó là sự liên kết. Python đối xử với không gian trắng trong các dấu ngoặc đơn đó giống như nó sẽ đối xử với khoảng trắng ở giữa bất kỳ dòng mã nào khác.this isn't indentation, it's alignment. Python treats white space within those parentheses as the same as it would treat whitespace in the middle of any other line of code.

Đó là vấn đề sở thích cá nhân về cách bạn kết thúc mã của mình. Bạn có thể nhìn vào PEP 8 cho một số ý tưởng.

Các cuộc gọi chức năng đã có dấu ngoặc đơn

Điều gì sẽ xảy ra nếu bạn muốn kết thúc một cuộc gọi chức năng qua nhiều dòng?

Bên trong một cuộc gọi chức năng (như

from collections.abc import (
    Hashable,Iterable, KeysView, Mapping,
        MutableMapping, Set)
0 bên dưới) chúng tôi đã có dấu ngoặc đơn:we already have parentheses:

fruits = ["lemons", "pears", "jujubes", "apples", "bananas", "blueberries", "watermelon"]

print("I like", " and ".join(sorted(fruits)), "but I only like certain types of pears")

Chúng ta không cần thêm dấu ngoặc đơn. Chúng tôi có thể thêm các lần phá vỡ dòng bất cứ nơi nào chúng tôi muốn trong một cuộc gọi chức năng và nó khá chỉ hoạt động:

fruits = ["lemons", "pears", "jujubes", "apples", "bananas", "blueberries", "watermelon"]

print(
    "I like",
    " and ".join(sorted(fruits)),
    "but I only like certain types of pears")

Tiếp tục dòng ẩn hoạt động cho tất cả các loại dấu ngoặc và niềng răng

Quy tắc tương tự áp dụng cho dấu ngoặc vuông (

from collections.abc import (
    Hashable,Iterable, KeysView, Mapping,
        MutableMapping, Set)
1).

Nếu chúng ta muốn chia nhỏ danh sách dài trên nhiều dòng:

fruits = ["lemons", "pears", "jujubes", "apples", "bananas", "blueberries", "watermelon"]

Chúng tôi có thể thêm các lần phá vỡ dòng bất cứ nơi nào chúng tôi muốn trong danh sách đó:

fruits = [
    "lemons",
    "pears",
    "jujubes",
    "apples",
    "bananas",
    "blueberries",
    "watermelon",
]

Miễn là chúng ta có một khung vuông mở (

from collections.abc import Hashable, Iterable, KeysView, Mapping, \
        MutableMapping, Set
6), dấu ngoặc đơn (
from collections.abc import Hashable, Iterable, KeysView, Mapping, \
        MutableMapping, Set
5) hoặc một nẹp xoăn mở (
from collections.abc import Hashable, Iterable, KeysView, Mapping, \
        MutableMapping, Set
7), chúng ta có thể thêm các ngắt đường bất cứ nơi nào chúng ta muốn trong các dấu ngoặc hoặc niềng răng đó.

Điều đó có nghĩa là chúng ta có thể lấy từ điển này:

from collections.abc import Hashable, Iterable, KeysView, Mapping, \
        MutableMapping, Set
0

Và phá vỡ nó trên nhiều dòng bằng cách đặt các đường tắt sau mỗi phần tử:

from collections.abc import Hashable, Iterable, KeysView, Mapping, \
        MutableMapping, Set
1

Mã số tự động có thể giúp

Bạn không cần phải làm điều này một mình. Bạn có thể chọn sử dụng một định dạng mã, như màu đen, để thực hiện công việc này cho bạn:

from collections.abc import Hashable, Iterable, KeysView, Mapping, \
        MutableMapping, Set
2

Tuy nhiên, bạn chọn phá vỡ mã của mình trên nhiều dòng, hãy nhớ rằng đó là tất cả về dấu ngoặc (

from collections.abc import (
    Hashable,Iterable, KeysView, Mapping,
        MutableMapping, Set)
1) và niềng răng (
from collections.abc import (
    Hashable,Iterable, KeysView, Mapping,
        MutableMapping, Set)
6 và
from collections.abc import (
    Hashable,Iterable, KeysView, Mapping,
        MutableMapping, Set)
7): Đó là những gì cho phép tiếp tục dòng ẩn.

Bản tóm tắt

Nếu bạn có một dòng mã rất dài trong Python và bạn muốn chia nó qua nhiều dòng, nếu bạn ở bên trong dấu ngoặc đơn, giá đỡ vuông hoặc niềng răng xoăn, bạn có thể đặt các đường ngắt bất cứ nơi nào bạn muốn vì Python Cho phép tiếp tục dòng ẩn.you're inside parentheses, square brackets, or curly braces you can put line breaks wherever you'd like because Python allows for implicit line continuation.

Nếu bạn chưa có dấu ngoặc hoặc niềng răng trên dòng của mình, bạn có thể thêm dấu ngoặc đơn ở bất cứ nơi nào bạn muốn và sau đó đặt các đường vỡ trong chúng để định dạng mã của bạn trên nhiều dòng.add parentheses wherever you'd like and then put line breaks within them to format your code nicely over multiple lines.

Làm thế nào để bạn phá vỡ một dòng mã dài?

Sử dụng ký tự liên tục dòng, là một dấu gạch dưới (_), tại điểm mà bạn muốn dòng bị phá vỡ..

Làm thế nào để bạn chia một tuyên bố dài thành nhiều dòng trong Python?

Chia một dòng dài thành nhiều dòng bằng cách sử dụng dấu gạch chéo ngược, dấu gạch chéo ngược (\) có thể được đặt giữa dòng để làm cho nó xuất hiện riêng biệt, như được hiển thị bên dưới.using backslash A backslash(\) can be put between the line to make it appear separate, as shown below.