Что значит питон?

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

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

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

не питонное время

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)

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

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

Другие вопросы по тегам