Przykłady krojenia w documentation pokazują tylko liczby całkowite i zmienne używane jako indeksy, a nie bardziej złożone wyrażenia (na przykład myarray[x/3+2:x/2+3:2]
). PEP-8 również nie obejmuje tej sprawy. Jakie jest zwykłe użycie białych znaków: myarray[x/3+2:x/2+3:2]
, myarray[x/3+2 : x/2+3 : 2]
lub myarray[x/3+2: x/2+3: 2]
(nie ma innych rozsądnych opcji)?Jaki jest zalecany odstęp w przypadku krojenia z użyciem indeksów wyrażenia w języku Python?
Odpowiedz
Nigdy nie widziałem spacji używanych w operacjach krojenia, więc błądziłbym po stronie unikania ich. Z drugiej strony, jeśli nie jest to krytyczne z punktu widzenia wydajności, byłbym skłonny do przeniesienia wyrażeń poza samą operację dzielenia. Po tym wszystkim, twoim celem jest czytelność:
lower = x/3 + 2
upper = x/2 + 3
myarray[lower:upper:2]
A jeśli to * jest * krytyczne pod względem wydajności, użyłbym zamiast tego Cythona. –
Uważam, że najbardziej odpowiedni wyciąg z PEP8 na ten temat:
Wytyczne, które tutaj mają na celu poprawę czytelność kodu i uczynić jest spójny w szerokim spektrum kodu Pythona.
W tym przypadku, mój osobisty wybór będzie prawdopodobnie albo Steve Mayne za odpowiedź, czy może:
myarray[slice(x/3 + 2, x/2 + 3, 2)]
Cóż, zwykle przestrzenie wokół moich operatorów i chciałbym brać w nawias złożonych wyrażeń: 'myarray [(x/3 + 2) :(x/2 + 3): 2] '. –
PEP8 zaleca przestrzeń wokół operatorów matematycznych. –