Đă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
0Và 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
1Mã 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
2Tuy 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.