Ví dụ về việc cắt trong documentation chỉ hiển thị các chữ số nguyên và các biến được sử dụng làm chỉ mục, không phải biểu thức phức tạp hơn (ví dụ: myarray[x/3+2:x/2+3:2]
). PEP-8 cũng không bao gồm trường hợp này. Việc sử dụng khoảng trống thông thường ở đây là gì: myarray[x/3+2:x/2+3:2]
, myarray[x/3+2 : x/2+3 : 2]
hoặc myarray[x/3+2: x/2+3: 2]
(dường như không có các tùy chọn hợp lý khác)?Khoảng trắng được đề nghị cho việc cắt bằng chỉ mục biểu thức bằng Python là gì?
Trả lời
Tôi chưa bao giờ thấy không gian được sử dụng trong hoạt động cắt, do đó, sẽ sai lầm ở phía bên tránh chúng. Sau đó, một lần nữa, trừ khi nó là hiệu suất quan trọng tôi muốn được nghiêng để di chuyển các biểu thức bên ngoài của hoạt động cắt hoàn toàn. Xét cho cùng, mục tiêu của bạn là dễ đọc:
lower = x/3 + 2
upper = x/2 + 3
myarray[lower:upper:2]
Và nếu nó * là * hiệu suất quan trọng thì tôi sẽ sử dụng Cython cho nó thay thế. –
Tôi tin rằng chiết xuất phù hợp nhất của PEP8 về chủ đề này là:
Các hướng dẫn được cung cấp ở đây nhằm mục đích cải thiện dễ đọc mã và làm cho nó nhất quán trên phổ rộng của mã Python.
Trong trường hợp này, sự lựa chọn cá nhân của tôi có lẽ sẽ là một trong hai câu trả lời Steve Mayne, hoặc có lẽ:
myarray[slice(x/3 + 2, x/2 + 3, 2)]
Vâng, tôi thường có các khoảng trống xung quanh nhà khai thác của tôi, và tôi sẽ nghĩ giải lao các biểu thức phức tạp: 'myarray [(x/3 + 2): (x/2 + 3): 2] '. –
PEP8 đề xuất một không gian xung quanh các toán tử toán học. –