Что значит pythonic?

На многих веб-сайтах я часто вижу комментарии, что код не является питоническим, или что существует более питонический способ достижения той же цели.

Что означает питонов в этом контексте? Например, почему

while i < someValue:
   do_something(list[i])
   i += 1

не pythonic while

for x in list:
   doSomething(x)

является питоническим?

Ответ 1

Использование функций языка Python для создания четкого, четкого и удобного кода.

Pythonic означает код, который не только правильно использует синтаксис, но и следует правилам сообщества Python и использует язык так, как он предназначен для использования.

Это, возможно, проще всего объяснить отрицательным примером, как в связанной статье из других ответов. Примеры непитонического кода часто поступают от пользователей других языков, которые вместо изучения шаблонов программирования на Python, таких как составление списков или выражений генератора, пытаются ломать шаблоны, чаще используемые в C или java. Циклы являются особенно распространенными примерами этого.

Например, в Java я мог бы использовать

for i in (i; i < items.length ; i++)
 {
  n = items[i];
 ... now do something
 }

В Python мы можем попробовать и реплицировать это, используя циклы while, но было бы проще использовать

for i in items:
  i.perform_action()

Или даже выражение генератора

(i.some_attribute for i in items)

Итак, по сути, когда кто-то говорит, что что-то неписано, они говорят, что код может быть переписан таким образом, который лучше подходит для стиля кодирования питонов.

Ввод import this в командной строке дает краткое описание принципов Python. Менее известно, что исходный код для import this определенно, и по дизайну, unpythonic! Взгляните на это на примере того, что не делать.