Konwencja nazewnictwa plików Python?

137

Widziałem tę część PEP-8 https://www.python.org/dev/peps/pep-0008/#package-and-module-names

Nie jestem pewien, czy odnosi się to do nazwy pliku modułu / klasy / pakietu.

Gdybym miał jeden przykład każdego z nich, czy nazwy plików powinny być pisane małymi literami, jeśli to właściwe? Albo coś innego?

ciemność
źródło
4
tl; dr: dwie klasy FooBari FooBizobie mogą wejść do pliku somepkg/foobar.py(więc:), from somepkg.foobar import FooBarale klasa TimerErrormogłaby wejść except/timer_error.py(tak from except.timer_error import TimerError), ponieważ usunięcie CamelCaseczasami sprawia, że ​​słowo jest trudniejsze do odczytania, dlatego snake_casemoże być użyte w nazwie pliku.
Michael

Odpowiedzi:

156

Cytując https://www.python.org/dev/peps/pep-0008/#package-and-module-names :

Moduły powinny mieć krótkie, małe litery. W nazwie modułu można zastosować podkreślenia, jeśli poprawi to czytelność. Pakiety Python powinny także mieć krótkie, małe litery, chociaż odradza się stosowanie znaków podkreślenia.

Na zajęcia :

Nazwy klas powinny normalnie używać konwencji CapWords.

A nazwy funkcji i (lokalne) zmiennych powinny być:

małe litery, w razie potrzeby słowa oddzielone podkreślnikami, aby poprawić czytelność

Zobacz odpowiedź na różnicę między modułem, klasą i pakietem:

  • Moduł Python to po prostu plik źródłowy Python, który może ujawniać klasy, funkcje i zmienne globalne.
  • Pakiet Python to po prostu katalog modułów Pythona.

Zatem PEP 8 mówi, że :

  • moduły (nazwy plików) powinny mieć krótkie, małe litery i mogą zawierać podkreślenia;
  • pakiety (katalogi) powinny mieć krótkie, małe litery , najlepiej bez podkreślników;
  • klasy powinny korzystać z konwencji CapWords.

PEP 8 mówi, że nazwy powinny być krótkie ; ta odpowiedź daje dobry przegląd tego, co należy wziąć pod uwagę przy tworzeniu nazw zmiennych, które mają również zastosowanie do innych nazw (dla klas, pakietów itp.):

  • nazwy zmiennych nie są pełnymi deskryptorami;
  • wstaw szczegóły w komentarzach;
  • zbyt specyficzna nazwa może oznaczać zbyt specyficzny kod;
  • trzymaj krótkie zakresy w celu szybkiego wyszukiwania;
  • spędzać czas na myśleniu o czytelności.

Na zakończenie dobry przegląd konwencji nazewnictwa znajduje się w Przewodniku po stylu Google Python .

ponownie
źródło
5
I z zażenowaniem poproszę o potwierdzenie mojej wiedzy, moduły zawierają klasy - więc użyjesz klas w modułach i możesz mieć wiele klas w jednym module?
darkace
6
Tak, możesz mieć 0, 1 lub więcej klas w module.
ponownie
1
Cieszę się, że znalazłem to na czas, zanim mój projekt wymknął się spod kontroli, ponieważ wszystkie moje pakiety były zgodne z konwencją CapsWords, podobnie jak moje zajęcia.
Bas Jansen,
1
@pypmannetjies to właściwie kolejne pytanie, ale powiedziałbym, że powinieneś preferować długie, zrozumiałe nazwy, a nie krótkie, niezrozumiałe.
ponownie
1
W przypadku nazwy pakietu napisano: „odradzanie używania podkreślników jest odradzane”, nie jest zabronione. W filozofii python powinieneś kierować się zasadą „chociaż praktyczność bije czystość”. Oczywiście, najlepiej jest znaleźć sposób, aby przestrzegać zasady i być praktyczne (może dokonać kilku pakietów podzielić nazwę, some> long> namezamiast somelongname?)
Juh_
0

Oto link do różnych typów konwencji nazw Python.

Przewodnik po stylu dla Pythona jest oparty na zaleceniach konwencji nazewnictwa Guido.

wprowadź opis zdjęcia tutaj

Vlad Bezden
źródło