На многих веб-сайтах я часто вижу комментарии о том, что код не является питоническим или что существует более питонический способ достижения той же цели.
Что в этом контексте означает питонический? Например, почему
while i < someValue:
do_something(list[i])
i += 1
не питонический пока
for x in list:
doSomething(x)
такое питонический?
Ответы:
Использование возможностей языка 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
явно и по замыслу не является питонным! Взгляните на это как пример того, чего не следует делать.источник