Czy najlepsze praktyki stylistyczne Pythona mają zastosowanie do kodowania naukowego?Czytelność kodu Pythona naukowego (kontynuacje linii, nazwy zmiennych, import)
Trudno jest utrzymać czytelność kodu w języku Python.
Na przykład sugerowane jest używanie znaczących nazw zmiennych i utrzymywanie porządku nazw przez unikanie import *
. Tak więc np. :
import numpy as np
normbar = np.random.normal(mean, std, np.shape(foo))
Ale te sugestie mogą prowadzić do trudnego do odczytania kodu, szczególnie biorąc pod uwagę szerokość linii o długości 79 znaków. Na przykład, po prostu napisał następującą operację:
net["weights"][ix1][ix2] += lrate * (CD/nCases - opts["weightcost_pretrain"].dot(net["weights"][ix1][ix2]))
mogę span ekspresję całej linii:
net["weights"][ix1][ix2] += lrate * (CD/nCases -
opts["weightcost_pretrain"].dot(net["weights"][ix1][ix2]))
ale to nie wydaje się znacznie lepiej, i nie jestem pewien, jak głęboko, aby wciąć druga linia. Tego rodzaju kontynuacje linii stają się jeszcze trudniejsze, gdy jeden z nich jest wcięty w pętlę zagnieżdżoną, a na linii jest tylko 50 znaków.
Czy powinienem zaakceptować, że naukowy Python wygląda niezgrabnie, czy też są sposoby na uniknięcie linii, jak w powyższym przykładzie?
Niektóre potencjalne podejścia są:
- stosując krótsze nazwy zmiennych
- stosując krótsze słownika nazwy klawiszy
- importowanie funkcji NumPy bezpośrednio i przypisywanie im krótkich nazw
- definiujące funkcje pomocnicze dla kombinacji operacji arytmetycznych
- dzielenie operacji na mniejsze części i umieszczanie po jednym w każdej linii
Byłbym wdzięczny za wszelkie mądrości, które z nich należy realizować, a których unikać, a także sugestie dotyczące innych środków zaradczych.
PEP 8 pozwala teraz na linie do 99 znaków, gdy poprawi czytelność, nawiasem mówiąc. – roippi
Twoje ostatnie dwa podejścia są bardzo zgodne z PEP 8 i ogólnie z pytonem. – abarnert
@roippi: [Obecna wersja] (http://www.python.org/dev/peps/pep-0008/#maximum-line-length) mówi "Ogranicz wszystkie linie do maksymalnie 79 znaków ... blokuje ... 72 znaki. " Głęboko w środku sekcji mówi: "Niektóre zespoły zdecydowanie preferują dłuższą długość linii. W przypadku kodu obsługiwanego wyłącznie lub głównie przez zespół, który może osiągnąć porozumienie w tej sprawie, można zwiększyć nominalną długość linii z 80 do 100 (efektywnie zwiększając maksymalną długość do 99 znaków), pod warunkiem, że komentarze i docstrukcje są nadal opakowane na 72 znaki. " – abarnert