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?

Kozyarchuk
źródło
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
bhadra
źródło
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.

S.Lott
źródło
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.

Ryan
źródło
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)
Ryan Cox
źródło
4

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

Alex Gaynor
źródło
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.

Oli
źródło
1

Podążam za PEP8, to świetny element stylu kodowania.

szczęśliwy
źródło