Дзен Питона
Дзен Python — это сборник из 19 «руководящих принципов» написания компьютерных программ , влияющих на дизайн Python языка программирования . [1] Код Python, соответствующий этим принципам, часто называют «Pythonic». [2]
Инженер-программист Тим Питерс написал этот набор принципов и разместил его в списке рассылки Python в 1999 году. [3] Список Петерса оставил открытым 20-й принцип «для заполнения Гвидо», имея в виду Гвидо ван Россума , первоначального автора языка Python. Вакансия 20-го принципала не заполнена.
Книга Питерса «Дзен Python» была включена под номером 20 в официальные предложения по усовершенствованию языка Python и стала общедоступной . [4] Он также включен как пасхалка Python в интерпретатор , где его можно отобразить, введя import this
. [1] [4] [а]
В мае 2020 года Барри Варшава (разработчик GNU Mailman ) написал тексты к музыке. [5] [6]
Принципы
[ редактировать ]Принципы перечислены следующим образом: [б]
- Красивое лучше уродливого.
- Явное лучше неявного.
- Простое лучше сложного.
- Комплекс лучше сложного.
- Плоский лучше, чем вложенный .
- Разреженный лучше, чем густой.
- Читабельность имеет значение.
- Особые случаи не настолько особенные, чтобы нарушать правила.
- Хотя практичность превосходит чистоту.
- Ошибки никогда не должны проходить молча.
- Если только явно не замолчать.
- Перед лицом двусмысленности откажитесь от искушения угадать.
- Должен быть один (и желательно только один) очевидный способ сделать это. [с]
- Хотя поначалу этот путь может быть неочевидным, если вы не голландец.
- Сейчас лучше, чем никогда.
- Хотя никогда зачастую лучше, чем прямо сейчас. [д]
- Если реализацию сложно объяснить , это плохая идея.
- Если реализацию легко объяснить, это может быть хорошей идеей.
- Пространства имен — это замечательная идея, давайте делать их больше!
Быть питоническим
[ редактировать ]Один из принципов: «Должен быть один — и желательно только один — очевидный способ сделать это» можно назвать «питоническим» способом. [8] Официальное определение «Pythonic»: [2]
Идея или фрагмент кода, который точно соответствует наиболее распространенным идиомам языка Python, а не реализует код с использованием концепций, общих для других языков. Например, распространенной идиомой в Python является цикл по всем элементам итерируемого объекта с использованием
for
заявление. Во многих других языках нет конструкции такого типа, поэтому люди, незнакомые с Python, иногда вместо этого используют числовой счетчик:for i in range(len(food)): print(food[i])В отличие от более чистого метода Pythonic:
for piece in food: print(piece)
Код, который сложно понять или который читается как грубая транскрипция с другого языка программирования, называется непитоническим . [9]
На практике
[ редактировать ]С момента выпуска «Дзена Python» были проведены исследования его эффективности и фактического использования среди разработчиков. Несмотря на разницу в интерпретации между начинающими и опытными программистами Python, интервью среди 13 программистов Python с разной квалификацией показывают, что дзен Python «положительно влияет на то, как разработчики пишут код и говорят о нем». [8] Исследователи расширили этот практический пример, чтобы изучить использование идиом Python в репозиториях GitHub , и обнаружили, что использование «идиом Python» [и] увеличивалось с течением времени. [10] Написание кода Python, соответствующего принципам дзен Python, может сэкономить память и время выполнения программ Python. [11] Желание писать код на Python привело к появлению инструментов рефакторинга, помогающих программистам достичь этой цели. [12] [13]
См. также
[ редактировать ]Примечания
[ редактировать ]- ^ Исходный код Zen of Python можно найти на Github .
- ^ Ссылки на Википедию ниже добавлены для дальнейшего использования и понимания и не были явно связаны в Zen of Python.
- ^ Форматирование тире в этой строке и в конце намеренно непоследовательно из-за различных соглашений о форматировании. [7]
- ^ В пасхальном яйце переводчика это написано как «Хотя никогда не бывает лучше, чем *прямо* сейчас». Это соответствует давнему соглашению об общении открытым текстом (при котором общие функции форматирования часто невозможны) и где акцент обозначается звездочками.
- ^ Список их Pythonic идиом можно найти здесь https://slimshadyiam.github.io/ZenYourPython/
Ссылки
[ редактировать ]- ^ Jump up to: а б Рейтц, Кеннет (2011–2019). «Стиль кода» . Путеводитель по Python для путешествующих автостопом . § Дзен Python . Проверено 26 марта 2019 г.
- ^ Jump up to: а б «Глоссарий» . Документация Python . Проверено 7 февраля 2024 г.
- ^ Питерс, Тим (4 июня 1999 г.). «Путь Питона» . Фонд программного обеспечения Python . Проверено 26 марта 2019 г.
- ^ Jump up to: а б Питерс, Тим (19 августа 2004 г.). «PEP 20 — Дзен Python» . Фонд программного обеспечения Python . Проверено 26 марта 2019 г.
- ^ Варшава, Барри (10 мая 2020 г.). «Дзен Питона» . Мы боимся перемен . Архивировано из оригинала 3 июня 2020 г.
- ^ Варшава, Барри (23 мая 2020 г.). Дзен Python . Ютуб . Збведикон. Архивировано из оригинала 11 декабря 2021 г. Архивировано 3 июня 2020 г. в Wayback Machine.
- ^ «Проблема 3364: орфографическая опечатка в тексте Zen of Python — трекер Python» . Проверено 10 февраля 2021 г.
- ^ Jump up to: а б Александру, Кэрол В.; Мерчанте, Хосе Дж.; Паничелла, Себастьяно; Прокш, Себастьян; Галл, Харальд К.; Роблес, Грегорио (24 октября 2018 г.). «Об употреблении питонических идиом» . Материалы Международного симпозиума ACM SIGPLAN 2018 года по новым идеям, новым парадигмам и размышлениям о программировании и программном обеспечении (PDF) . Вперед! 2018. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 1–11. дои : 10.1145/3276954.3276960 . ISBN 978-1-4503-6031-9 . OCLC 1362712424 . S2CID 53057358 . Архивировано из оригинала 3 октября 2018 г.
- ^ «Стиль кода — Путеводитель по Python для путешествующих автостопом» . docs.python-guide.org . Архивировано из оригинала 27 января 2021 года . Проверено 20 января 2021 г.
- ^ Фарук, Аамир; Зайцев, Вадим (22 ноября 2021 г.). «Есть несколько способов усовершенствовать ваш Python» . Материалы 14-й Международной конференции ACM SIGPLAN по языковой инженерии программного обеспечения . SLE 2021. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 68–82. дои : 10.1145/3486608.3486909 . ISBN 978-1-4503-9111-5 .
- ^ Лилапрут, Паттара; Чинтанет, Бодин; Ваттанакриенгкрай, Супатсара; Кула, Раула Гайковина; Джайсри, Понгчай; Исио, Такаши (20 октября 2022 г.). «Делает ли программирование на Pythonic zen максимальную производительность?: Предварительные эксперименты с девятью Pythonic-идиомами в масштабе» . Материалы 30-й Международной конференции IEEE/ACM по пониманию программ . МКПК '22. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 575–579. дои : 10.1145/3524610.3527879 . ISBN 978-1-4503-9298-3 .
- ^ Син, Чжан , ; Цзэцзюнь ; Чжэнчан
- ^ Фанудом, Пурит; Ваттанакул, Наруедон; Сакулниват, Таттия; Рагхитветсагул, Чайёнг; Сунетнанта, Танвади; Чёткиертикул, Моракот; Кула, Раула Гайковина (05 сентября 2020 г.), Тедди: Автоматические рекомендации по использованию Pythonic идиом для проектов программного обеспечения на основе извлечения , arXiv : 2009.03302