Python философия: Дзен питона на русском / Тяпк

Дзен питона на русском / Тяпк

Разработчики языка Python придерживаются определённой философии программирования, называемой «The Zen of Python» («Дзен Питона», или «Дзен Пайтона»). Её текст выдаётся интерпретатором Python по команде import this (работает один раз за сессию).

В целом она подходит к программированию на любом языке.

  • Красивое лучше, чем уродливое.
  • Явное лучше, чем неявное.
  • Простое лучше, чем сложное.
  • Сложное лучше, чем запутанное.
  • Плоское лучше, чем вложенное.
  • Разреженное лучше, чем плотное.
  • Читаемость имеет значение.
  • Особые случаи не настолько особые, чтобы нарушать правила.
  • При этом практичность важнее безупречности.
  • Ошибки никогда не должны замалчиваться.
  • Если они не замалчиваются явно.
  • Встретив двусмысленность, отбрось искушение угадать.
  • Должен существовать один и, желательно, только один очевидный способ сделать это.
  • Хотя он поначалу может быть и не очевиден, если вы не голландец [^1].
  • Сейчас лучше, чем никогда.
  • Хотя никогда зачастую лучше, чем прямо сейчас.
  • Если реализацию сложно объяснить — идея плоха.
  • Если реализацию легко объяснить — идея, возможно, хороша.
  • Пространства имён — отличная штука! Будем делать их больше!

Автор этой философии — Тим Петерс. Оригинал на английском:

λ python
Python 3.6.2 (v3.6.2:5fd33b5, Jul  8 2017, 04:14:34) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess. 
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

P.S. Чтобы 2 раза не вставать: 20 вопросов и ответов из интервью на позицию Python-разработчика


Отсылка к нидерландскому программисту, создавшему язык Python, Гвидо ван Россуму (нидерл. Guido van Rossum).

Первоначальная настройка Sublime Text

Установка пакетного менеджера (Package Control), установка пакетов на примере Emmet, несколько полезных пакетов Sublime Text 3.

Какой язык программирования учить первым?

Для начало необходимо решить как Вам больше нравится: «начинать со сложного» или «начинать с простого». Можно провести аналогию с обучением вождения на автоматической коробке передач и механическим аналогом. Автомат — начинаем с простого, механика — со сложного.

Улучшение контрастности темы Material Theme редактора Visual Studio Code

Для Visual Studio Code есть несколько тем в стиле материального дизайна, и все они с недостатками: либо некорретная подстветка синтаксиса, либо проблемы с контрастностью.

pip или easy_install

Приводится перечень преимуществ pip перед easy_install

RxJS. Подписка в подписке

О том как не надо и как надо делать подписки в rxjs

На курсах backend по C++

Настройка после установки Ubuntu 18.04 для курса по C++

философии программирования PEP20 (на русском)

Содержание:развернуть

Python является одним из самых простых и при этом мощных языков программирования. Он широко востребован сегодня, такие компании как IBM, Google, Facebook и многие другие создают свои продукты именно на Python. Также стоит отметить, что «Питон» — это язык программирования с большим потенциалом на будущее.

Для новичков этот язык очень прост в изучении, а для профессионалов он открывает большие возможности для реализации самых креативных идей, предоставляет широкий ряд инструментов для решения не только простых задач, но и сложных проектов. Все это возможно, благодаря открытости и постоянному обновлению языка.

Одним из важных вкладов в развитие Python стал свод правил Дзен Питон или как его еще называют PEP20 (python enhanced proposal — заявки на улучшение языка Питон) от Тима Петерсона.

История создания PEP20

В 1999 году Тим Петерс предложил свой свод правил по улучшению языка Питон. Дзен Python представлял собой 20 пунктов, последний из которых не был заполнен. Автор предложил написать последнее правило создателю «Питона» Гвидо Ван Россуму. Стоит отметить, что и по сей день последнее правило Дзен-философии от Тима Петерса пустое. Некоторые полагают, что таким образом автор пытался донести до нас, что правила правилами, но могут быть и исключительные ситуации, когда нужно писать код исходя из сложившихся условий, при этом игнорируя установленные нормы.

Сегодня этот свод правил такой же востребованный, как два десятка лет назад. Благодаря этому код, написанный с учетом PEP20, легко читаем для любого программиста. Это особенно актуально при реализации больших масштабных проектов, над созданием кода которых трудится целая группа программистов. Также читабельность кода важна при последующем сопровождении программного продукта – исправлении багов, выпуске обновлений.

Версии PEP

Кроме Тима Петерсона множество других заинтересованный в развитии Python людей подавали заявки на улучшение языка Питон. Каждое такое предложение получает свой номер. На сегодняшний день насчитывается порядка 8 000 таких заявок. Стоит понимать, что только часть из них были приняты. Остальные были либо оставлены на рассмотрение, либо вовсе отклонены.

Но те PEP, которые были приняты, в том числе и PEP под номером 20 от Тима Петерса, внесли свой вклад в развитие Питона.

PEP 20 в консоли

Найти Zen of Python можно на официальном сайте по языку программирования Python. Также ознакомиться с этой информацией можно в консольном приложении Python. Достаточно ввести всего одну команду import this и на экране высветиться свод из 19 правил на английском языке. Выглядит это следующим образом:

Команда import this выводит текст PEP20 (The Zen of Python).

Zen of Python на русском языке

PEP20, а если быть точнее, то 19 правил по улучшению языка Питон от Тима Петерса, выглядят следующим образом на русском языке:

  • Красивое лучше уродливого.
  • Явное лучше неявного.
  • Простое лучше сложного.
  • Сложное лучше запутанного.
  • Развернутое лучше вложенного.
  • Разреженное лучше плотного.
  • Читаемость имеет значение.
  • Особые случаи не настолько особые, чтобы нарушать правила.
  • При этом практичность важнее безупречности.
  • Ошибки не должны замалчиваться.
  • Если не замалчиваются явно.
  • Встретив двусмысленность, отбрось искушение угадать.
  • Должен существовать один — и, желательно, только один – очевидный способ сделать что-то.
  • Хотя этот способ поначалу может быть и не очевиден, если вы не голландец.
  • Сейчас лучше, чем никогда.
  • Хотя никогда часто лучше, чем *прямо* сейчас.
  • Если реализацию сложно объяснить – идея точно плоха.
  • Если реализацию легко объяснить – возможно, идея хороша.
  • Пространства имен – отличная штука! Будем использовать их чаще!

Советы по улучшению читабельности кода на Python

Благодаря философии Дзен на сегодняшний день код программ на Питоне один из самых читабельных и простых. Существует свод правил, придерживаясь которым, можно написать красивый код. Итак, нужно знать следующее:

  • Наличие отступов в четыре символа делает код зрительно структурированным. Не стоит смешивать пробелы с табуляцией. При компиляции можно получить предупреждения от системы.
  • Длина одной строки не должна превышать восьмидесяти символов, такой код не выглядит громоздким. Еще одно достоинство коротких строк – это возможность располагать на экране монитора сразу несколько окон с кодом.
  • В код для разделения функций или каких-то больших логических блоков можно добавлять пустые строки.
  • Наличие толковых комментариев облегчает последующее использование кода.

Еще больше полезных советов с примерами можно найти здесь. Следуя этим правилам можно получить хорошо читабельный код на Python. Но, чтобы облегчить задачу, можно воспользоваться какой-нибудь современной средой разработки. Так, например, выбрав PyCharm, при нажатии клавиши «Tab» автоматически проставляется нужные четыре пробела.


В заключении хочется отметить, что философия Zen of Python от Тима Петерса стала важной ступенью в развитии языка. Питон на сегодняшний день один из самых простых языков программирования для изучения, при этом он открывает широкие возможности для реализации крупных масштабных проектов.

1. История и философия Python

Автор Бернд Кляйн . Последнее изменение: 01 февраля 2022 г.

На этой странице ➤

Просто как азбука

Что общего у алфавита и языка программирования Python? Правильно, оба начинаются с ABC. Если мы говорим об ABC в контексте Python, то понятно, что имеется в виду язык программирования ABC. ABC — это язык программирования общего назначения и среда программирования, которая была разработана в Нидерландах, Амстердаме, в CWI (Centrum Wiskunde & Informatica). Самым большим достижением ABC было влияние на дизайн Python.

Python был разработан в конце 1980-х годов. Гвидо ван Россум работал в то время в проекте CWI под названием Amoeba, распределенная операционная система. В интервью Биллу Веннерсу1 Гвидо ван Россум сказал: «В начале 1980-х я работал разработчиком в команде, создающей язык под названием ABC в Centrum voor Wiskunde en Informatica (CWI). Я не знаю, насколько хорошо люди знают Влияние ABC на Python. Я пытаюсь упомянуть о влиянии ABC, потому что я в долгу перед всем, что я узнал во время этого проекта, и перед людьми, которые работали над ним».

Позже в том же интервью Гвидо ван Россум продолжил: «Я вспомнил весь свой опыт и некоторое разочарование, связанное с ABC. Я решил попытаться разработать простой язык сценариев, который обладал бы некоторыми лучшими свойствами ABC, но без его проблем. Итак, я начал печатать. Я создал простую виртуальную машину, простой синтаксический анализатор и простую среду выполнения. Я сделал свою собственную версию различных частей ABC, которые мне понравились. Я создал базовый синтаксис, использовал отступы для группировки операторов вместо фигурных скобок. или блоки begin-end, и разработал небольшое количество мощных типов данных: хеш-таблицу (или словарь, как мы ее называем), список, строки и числа».

Живое обучение Python

Нравится эта страница? Мы предлагаем живых обучающих курса Python , охватывающих содержание этого сайта.

См.: Обзор курсов Live Python

Зарегистрироваться здесь

Комедия, Змея или Язык программирования

Так что насчет имени «Питон»? Большинство людей думают о змеях, и даже на логотипе изображены две змеи, но происхождение названия связано с британским юмором. Гвидо ван Россум, создатель Python, написал в 1996 о происхождении названия своего языка программирования1: «Более шести лет назад, в декабре 1989 года, я искал «хобби» проекта по программированию, которым я мог бы занять всю неделю перед Рождеством. Мой офис… закрыто, но у меня был домашний компьютер, а под рукой было не так уж и много. Я решил написать интерпретатор для нового скриптового языка, о котором думал в последнее время: потомка ABC, который понравится хакерам Unix/C. Python в качестве рабочего названия для проекта, находясь в слегка непочтительном настроении (и большой поклонник Летающего цирка Монти Пайтона)».

Дзен Питона

 Красивое лучше безобразного.
Явное лучше неявного.
Простое лучше сложного.
Комплекс лучше сложного.
Flat лучше, чем вложенный.
Редкий лучше, чем густой.
Удобочитаемость имеет значение.
Особые случаи не настолько особенные, чтобы нарушать правила.
Хотя практичность побеждает чистоту.
Ошибки никогда не должны проходить бесшумно. 
Если явно не заглушить.
Перед лицом двусмысленности откажитесь от искушения угадать.
Должен быть один — и желательно только один — очевидный способ сделать это.
Хотя поначалу это может быть неочевидно, если только вы не голландец.
Сейчас лучше, чем никогда.
Хотя никогда зачастую лучше, чем *прямо* сейчас.
Если реализацию трудно объяснить, это плохая идея.
Если реализацию легко объяснить, это может быть хорошей идеей.
Пространства имен — это отличная идея — давайте сделаем больше таких!
 

Живое обучение Python

Нравится эта страница? Мы предлагаем живых обучающих курса Python , охватывающих содержание этого сайта.

See: Live Python courses overview

Upcoming online Courses

Python Basics for Beginners

Intensive Advanced Course

Python for Engineers and Scientists

Object Oriented Programming with Python

Enrol here

шагов разработки Python

Гвидо Ван Россум опубликовал первую версию кода Python (версия 0. 9.0) на сайте alt.sources в феврале 1991 года. Этот выпуск уже включал обработку исключений, функции и основные типы данных list, dict, str и другие. Он также был объектно-ориентированным и имел модульную систему.

Python версии 1.0 был выпущен в январе 1994 года. Основными новыми функциями, включенными в этот выпуск, были инструменты функционального программирования lambda, map, filter и reduce, которые никогда не нравились Гвидо Ван Россуму.

Шесть с половиной лет спустя, в октябре 2000 года, был представлен Python 2.0. Этот выпуск включал в себя понимание списков, полный сборщик мусора и поддерживал юникод.

Python процветал еще 8 лет в версиях 2.x, прежде чем был выпущен следующий основной выпуск Python 3.0 (также известный как «Python 3000» и «Py3K»). Python 3 не имеет обратной совместимости с Python 2.x. Акцент в Python 3 был сделан на удалении повторяющихся программных конструкций и модулей, таким образом выполняя или приближаясь к выполнению 13-го закона дзен Python: «Должен быть один — и желательно только один — очевидный способ сделать Это. »

Некоторые изменения в Python 3.0:

 Печать теперь является функцией
Представления и итераторы вместо списков
Упрощены правила упорядочивания сравнений. Например. разнородный список не может быть отсортирован, потому что все элементы списка должны быть сопоставимы друг с другом.
Остался только один целочисленный тип, т.е. int. long также является int.
Деление двух целых чисел возвращает число с плавающей запятой вместо целого числа. "//" можно использовать для "старого" поведения.
Текст Против. Данные вместо Unicode Vs. 8-бит 

Живое обучение Python

Нравится эта страница? Мы предлагаем живых обучающих курса Python , охватывающих содержание этого сайта.

See: Live Python courses overview

Upcoming online Courses

Python Basics for Beginners

Intensive Advanced Course

Python for Engineers and Scientists

Object Oriented Programming with Python

Enrol here

The History Python: философия дизайна Python

Более поздние записи блога будут посвящены кровавым подробностям истории Python. Однако прежде чем я это сделаю, я хотел бы остановиться на философских принципах, которые помогли мне принимать решения при разработке и реализации Python.

Во-первых, Python изначально задумывался как «бестолковый» проект одного человека — официального бюджета не было, а я хотел получить результаты быстро, отчасти для того, чтобы убедить руководство поддержать проект (в котором я довольно активно участвовал). успешный). Это привело к ряду правил экономии времени:

  • Заимствуйте идеи откуда угодно, когда это имеет смысл.
  • «Все должно быть как можно проще, но не проще». (Эйнштейн)
  • Делайте одно дело хорошо («Философия UNIX»).
  • Не беспокойтесь о производительности — планируйте оптимизацию позже, когда это необходимо.
  • Не боритесь с окружающей средой и плывите по течению.
  • Не стремитесь к совершенству, потому что «достаточно хорошо» часто означает именно это.
  • (Следовательно) иногда можно срезать углы, особенно если вы можете сделать это позже.

Другие принципы не предназначены для экономии времени. Иногда они были прямо противоположными:

  • Реализация Python не должна быть привязана к конкретной платформе. Ничего страшного, если какой-то функционал будет доступен не всегда, но ядро ​​должно работать везде.
  • Не беспокойте пользователей деталями, с которыми машина может справиться (я не всегда следовал этому правилу, и некоторые катастрофические последствия описаны в последующих разделах).
  • Поддерживайте и поощряйте независимый от платформы пользовательский код, но не закрывайте доступ к возможностям или свойствам платформы (это резко отличается от Java).
  • Большая сложная система должна иметь несколько уровней расширяемости. Это максимизирует возможности для пользователей, опытных или нет, чтобы помочь себе.
  • Ошибки не должны быть фатальными. То есть пользовательский код должен иметь возможность восстанавливаться после ошибок, пока виртуальная машина все еще работает.
  • В то же время ошибки не должны проходить молча (Последние два пункта естественным образом привели к решению использовать исключения во всей реализации.)
  • Нельзя допускать, чтобы ошибка в пользовательском коде Python приводила к неопределенному поведению интерпретатора Python; дамп ядра никогда не является ошибкой пользователя.

Наконец, у меня появились различные идеи о хорошем дизайне языка программирования, которые в значительной степени были запечатлены во мне группой ABC, где я получил свой первый реальный опыт реализации и дизайна языка. Эти идеи труднее всего выразить словами, поскольку они в основном вращались вокруг таких субъективных понятий, как элегантность, простота и удобочитаемость.

Хотя я подробнее расскажу о влиянии ABC на Python чуть позже, я хотел бы особо упомянуть об одном правиле удобочитаемости: знаки препинания следует использовать консервативно, в соответствии с их обычным использованием в письменном английском или школьной алгебре. Исключения делаются, когда определенная запись является давней традицией в языках программирования, например «x*y» для умножения, «a[i]» для подписки на массив или «x.foo» для выбора атрибута, но Python делает это. не используйте «$» для обозначения переменных, а также «!» для обозначения операций с побочными эффектами.

Тим Питерс, давний пользователь Python, который со временем стал самым плодовитым и упорным разработчиком ядра, попытался воплотить мои неустановленные принципы проектирования в то, что он называет «дзен Python». Привожу его здесь целиком:

  • Красивое лучше некрасивого.
  • Явное лучше неявного.
  • Простое лучше сложного.
  • Сложное лучше, чем сложное.
  • Плоский лучше, чем вложенный.
  • Разреженный лучше, чем плотный.
  • Удобочитаемость имеет значение.
  • Особые случаи не настолько особенные, чтобы нарушать правила.
  • Хотя практичность важнее чистоты.
  • Ошибки никогда не должны проходить незаметно.
  • Если явно не отключено.
  • Перед лицом двусмысленности откажитесь от искушения угадать.
  • Должен быть один — и желательно только один — очевидный способ сделать это.
  • Хотя поначалу это может быть неочевидно, если только вы не голландец.
  • Лучше сейчас, чем никогда.
  • Хотя никогда лучше, чем прямо сейчас.
  • Если реализацию трудно объяснить, это плохая идея.
  • Если реализацию легко объяснить, это может быть хорошей идеей.
  • Пространства имен — это отличная идея — давайте сделаем больше таких!

Хотя мой опыт работы с ABC сильно повлиял на Python, у группы ABC было несколько принципов проектирования, которые радикально отличались от принципов Python. Во многих отношениях Python является сознательным отходом от них:

  • Группа ABC стремилась к совершенству. Например, они использовали алгоритмы древовидной структуры данных, которые оказались оптимальными для асимптотически больших коллекций (но не так хороши для небольших коллекций).
  • Группа ABC хотела как можно полнее изолировать пользователя от «большого, плохого мира компьютеров». Не должно быть не только ограничений на диапазон чисел, длину строк или размер коллекций (кроме общей доступной памяти), но и от пользователей не требуется иметь дело с файлами, дисками, «сохранением», или другие программы. ABC должен быть единственным инструментом, в котором они когда-либо нуждались. Это желание также побудило группу ABC создать полную интегрированную среду редактирования, уникальную для ABC (Был, конечно, выход из среды ABC, но в основном это было задним числом, и он не был доступен непосредственно из языка.)
  • Группа ABC предположила, что у пользователей не было опыта работы с компьютером (или они были готовы его забыть). Таким образом, была введена альтернативная терминология, которая считалась более «дружественной для новичков», чем стандартные термины программирования. Например, процедуры назывались «инструкции», а переменные — «местоположения».
  • Группа ABC разработала ABC, не думая об эволюционном пути и не ожидая участия пользователей в разработке языка. ABC создавалась как закрытая система, настолько безупречная, насколько ее могли сделать ее разработчики. Пользователям не предлагалось «заглянуть под капот». Хотя были разговоры об открытии частей реализации для опытных пользователей на более поздних стадиях проекта, это так и не было реализовано.

Во многих отношениях философия дизайна, которую я использовал при создании Python, вероятно, является одной из главных причин его окончательного успеха. Вместо того чтобы стремиться к совершенству, первые последователи обнаружили, что Python работает «достаточно хорошо» для их целей. По мере роста пользовательской базы в язык постепенно включались предложения по улучшению. Как мы увидим в следующих разделах, многие из этих улучшений повлекли за собой существенные изменения и переработку основных частей языка.

This entry was posted in Популярное