Như bạn đã đề cập, PEP8 không đề cập đến một cách rõ ràng các nhà điều hành lát ở định dạng đó, nhưng spam[3:5]
chắc chắn là phổ biến hơn và IMHO dễ đọc hơn.
Nếu pep8 checker là bất cứ điều gì để đi theo, không gian trước khi :
sẽ được gắn cờ lên
[[email protected]]$ pep8 <(echo "spam[3:44]") # no warnings
[[email protected]]$ pep8 <(echo "spam[3 : 44]")
/dev/fd/63:1:7: E203 whitespace before ':'
... nhưng đó là chỉ vì nó giả định :
là các nhà điều hành để xác định một dict đen và không có không gian được mong đợi trước toán tử. spam[3: 44]
vượt qua vì lý do đó, nhưng điều đó dường như không đúng.
Trên số đó, tôi muốn gắn vào spam[3:44]
.
Hoạt động số học lồng nhau phức tạp hơn một chút. Trong số 3 ví dụ của bạn, chỉ có 2 ví dụ mới vượt qua được xác thực PEP8:
[[email protected]]$ pep8 <(echo "spam[ham(66)//3:44+eggs()]")
/dev/fd/63:1:13: E225 missing whitespace around operator
[[email protected]]$ pep8 <(echo "spam[ham(66) // 3:44 + eggs()]") # OK
[[email protected]]$ pep8 <(echo "spam[ham(66) // 3 : 44 + eggs()]")
/dev/fd/63:1:18: E203 whitespace before ':'
Tuy nhiên, tôi thấy tất cả những điều khó phân tích ở trên bằng mắt ngay từ cái nhìn đầu tiên.
Đối với khả năng đọc và tuân thủ PEP8, tôi muốn đích thân đi cho:
spam[(ham(66) // 3):(44 + eggs())]
Hoặc cho các hoạt động phức tạp hơn:
s_from = ham(66) // 3
s_to = 44 + eggs()
spam[s_from:s_to]
Nguồn
2011-11-11 10:43:25