Na wielu stronach internetowych często widzę komentarze, że kod nie jest pythonowy lub że istnieje bardziej pythonowy sposób osiągnięcia tego samego celu.
Co w tym kontekście oznacza pythonic? Na przykład, dlaczego tak jest
while i < someValue:
do_something(list[i])
i += 1
nie pythonic while
for x in list:
doSomething(x)
jest pythonic?
Odpowiedzi:
Wykorzystywanie funkcji języka Python do tworzenia kodu, który jest jasny, zwięzły i łatwy w utrzymaniu.
Pythonic oznacza kod, który nie tylko ma właściwą składnię, ale jest zgodny z konwencjami społeczności Pythona i używa języka w sposób, w jaki jest przeznaczony.
Być może najłatwiej to wyjaśnić za pomocą negatywnego przykładu, tak jak w powiązanym artykule z innych odpowiedzi. Przykłady kodu niepytonicznego często pochodzą od użytkowników innych języków, którzy zamiast uczyć się wzorców programowania w Pythonie, takich jak listy składane lub wyrażenia generatora, próbują łomem we wzorcach częściej używanych w C lub Javie. Pętle są tego szczególnie powszechnymi przykładami.
Na przykład w Javie mógłbym użyć
for i in (i; i < items.length ; i++) { n = items[i]; ... now do something }
W Pythonie możemy spróbować powtórzyć to za pomocą pętli while, ale byłoby to czystsze w użyciu
for i in items: i.perform_action()
Lub nawet wyrażenie generatora
(i.some_attribute for i in items)
Zasadniczo, gdy ktoś mówi, że coś jest nietypowe, mówi, że kod można przepisać w sposób, który lepiej pasuje do stylu kodowania w Pythonie.
Wpisanie
import this
w wierszu poleceń daje podsumowanie zasad Pythona. Mniej znane jest to, że kod źródłowy programuimport this
jest zdecydowanie i zgodnie z projektem, niepytoniczny! Spójrz na to, aby zobaczyć, czego nie robić.źródło