Standardy kodowania Python / najlepsze praktyki [zamknięte]


116

Czy w Pythonie zazwyczaj używasz PEP 8 - Style Guide for Python Code jako standardów / wytycznych kodowania? Czy są jakieś inne sformalizowane standardy, które wolisz?


1
//, Dążenie do „preferencji publiczności” może początkowo wydawać się nieszkodliwe, ale zamienia przepełnienie stosu w mechanizm ankietowy, rodzaj wypaczonej demokracji nielicznych przeciwko wielu. „Czy są jakieś inne ________, które wolisz?” to dosłownie proszenie ich o preferencje, a nie fakt.
Nathan Basanese

Odpowiedzi:


150

„Czy w Pythonie generalnie używasz PEP 8 - Style Guide for Python Code jako standardy / wytyczne dotyczące kodowania? Czy są jakieś inne sformalizowane standardy, które wolisz?”

Jak wspomniałeś, postępuj zgodnie z PEP 8 dla tekstu głównego i PEP 257 dla konwencji dokumentowania

Wraz z przewodnikami po stylu Pythona proponuję zapoznać się z następującymi kwestiami:

  1. Code Like a Pythonista: Idiomatic Python
  2. Typowe błędy i brodawki
  3. Jak nie pisać kodu w Pythonie
  4. Python rozumiem


8

Bardzo mocno trzymam się PEP-8.

Są trzy konkretne rzeczy, których nie chcę zmienić na PEP-8.

  • Unikaj zbędnych spacji bezpośrednio w nawiasach, nawiasach lub klamrach.

    Zasugerował: spam(ham[1], {eggs: 2})

    I tak robię to: spam( ham[ 1 ], { eggs: 2 } )

    Czemu? Ponad 30 lat zakorzenionego nawyku jest sprzeczne z nazwami funkcji lub słowami kluczowymi (w C) wyrażeniach. Począwszy od Fortran IV w latach 70-tych.

  • Użyj spacji wokół operatorów arytmetycznych:

    Zasugerował: x = x * 2 - 1

    I tak robię to: x= x * 2 - 1

    Czemu? The Science of Programming Griesa zasugerowała to jako sposób na podkreślenie związku między przypisaniem a zmienną, której stan się zmienia.

    Nie działa dobrze w przypadku przypisania wielokrotnego lub przydziału rozszerzonego, ponieważ używam wielu spacji.

  • W przypadku nazw funkcji, nazw metod i nazw zmiennych instancji

    Sugerowane: małe litery, ze słowami oddzielonymi podkreśleniami, jeśli to konieczne, aby poprawić czytelność.

    I tak robię to: camelCase

    Czemu? Ponad 20 lat zakorzenionego nawyku CamelCase, począwszy od Pascala w latach 80-tych.


1
To świetna treść! codingstyleguide.com lub codereview.stackexchange.com to miłe miejsce na te świetne wytyczne.
Pompeyo

5

PEP 8 jest dobry, jedyną rzeczą, na którą chciałbym, żeby był trudniejszy, była święta wojna Tabs-vs-Spaces.

Zasadniczo, jeśli zaczynasz projekt w Pythonie, musisz wybrać Tabs lub Spaces, a następnie strzelać do wszystkich przestępców, gdy tylko zobaczysz.


4
Karty czy spacje? Z PEP8: Spacje są preferowaną metodą wcięć. Tabulatory powinny być używane wyłącznie w celu zachowania spójności z kodem, który jest już wcięty za pomocą tabulatorów.
Demz

//, PEP8 jest całkiem jasne, że spacje są preferowaną metodą wcięć, Ryan. Głosowano w dół. Czy jednak zaktualizowałbyś odpowiedź?
Nathan Basanese

5

Aby dodać do listy idiomatycznych przewodników Bhadry :

Sprawdź prezentację Anthony'ego Baxtera na temat efektywnego programowania w Pythonie (z OSON 2005).

Fragment:

# dict's setdefault method turns this:
if key in dictobj:
    dictobj[key].append(val)
else:
    dictobj[key] = [val]
# into this:
dictobj.setdefault(key,[]).append(val)

4

Przestrzegam tego niezwykle rygorystycznie. Jedynym bogiem przed PEP-8 są istniejące bazy kodowe.


1
i chciałbym zauważyć, że PEP-8 bierze pod uwagę nawet istniejące bazy kodu.
John Mulder

2

Tak, staram się go jak najdokładniej śledzić.

Nie przestrzegam żadnych innych standardów kodowania.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.