>>> 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!
>>>
(Перевод:
Дзен языка Python, составлен Тимом Петерсом
Красивое лучше, чем уродливое.
Явное лучше, чем неявное.
Простое лучше, чем сложное.
Сложное лучше, чем запутанное.
Плоское лучше, чем вложенное.
Разреженное лучше, чем плотное.
Удобочитаемость имеет значение.
Особые случаи не настолько особые, чтобы нарушать правила.
При этом практичность важнее безупречности.
Ошибки никогда не должны замалчиваться.
Если не замалчиваются явно.
Встретив двусмысленность, отбрось искушение угадать.
Должен существовать один и, желательно, только один очевидный способ
сделать что-то.
Хотя он поначалу может быть и не очевиден, если вы не голландец.
Сейчас лучше, чем никогда.
Хотя никогда зачастую лучше, чем *прямо сейчас*.
Если реализацию сложно объяснить - идея плоха.
Если реализацию легко объяснить - идея, возможно, хороша.
Пространства имен - отличная штука! Будем делать их побольше!
)1
Особого упоминания заслуживает правило «Явное лучше, чем неявное», которое в мире Python известно, как аббревиатура «EIBTI» («Explicit is better than implicit») - одна из основных идей языка Python, и одно из самых сильных отличий от других языков. Любой, кто проработал на этой ниве более, чем несколько лет, сможет засвидетельствовать, что волшебство и инженерное искусство есть вещи несовместимые. Конечно, сам язык Python не всегда неукоснительно следовал всем этим правилам, но старался придерживаться их как можно ближе. И если Python заставляет людей задумываться о таких вещах, то это уже победа. Кстати, название языка отлично смотрится на футболке.
Перевод взят из Википедии: http://ru.wikipedia.org/wiki/Python - Прим. перев.
Системное
программирование
В этой первой посвященной деталям части книги представлены инструменты Python для системного программирования - интерфейсы к службам операционной системы, а также к контексту выполнения программы. Эта часть книги состоит из следующих глав:
Глава 2
Эта глава обеспечивает полный обзор часто используемых инструментов системного программирования. Она неторопливо знакомит с инструментами и приемами, которые мы будем использовать далее в этой книге, и отчасти может использоваться, как справочник.
Глава 3
Эта глава продолжает тему, начатую в главе 2, и показывает, как работать со стандартными потоками ввода-вывода, аргументами командной строки, переменными окружения и многим другим.
Глава 4
Эта глава продолжает знакомить нас с системными интерфейсами и описывает инструменты и приемы, используемые при работе с файлами и каталогами. В этой главе мы познакомимся с двоичными файлами, с приемами обхода деревьев и так далее.
Глава5
Эта глава служит введением в поддержку библиотекой Python параллельного выполнения программ. Здесь вы найдете описание потоков выполнения, механизма ветвления процессов, каналов, сокетов, сигналов, очередей и тому подобного.
Глава 6
Последняя глава этой части содержит коллекцию типичных примеров системного программирования, основанных на материале первых четырех глав. Сценарии Python, представленные здесь, выполняют реальные задачи; демонстрируют среди прочего, как разрезать и объединять файлы, сравнивать и копировать каталоги, тестировать другие программы, а также отыскивать и запускать выполняемые файлы.
Хотя в этой части книги особое значение придается задачам системного программирования, представленные в ней средства являются универсальными и часто будут использоваться в последующих главах.
2
Системные инструменты
«os.path - дорога к знанию»
В этой главе начинается детальное рассмотрение способов применения Python для решения практических задач программирования. В этой и в последующих главах мы увидим, как использовать Python для разработки системных инструментов, графических интерфейсов пользователя, приложений баз данных, веб-сценариев, веб-сайтов и многого другого. Попутно на практических примерах будут также изучаться важнейшие концепции программирования на Python: повторное использование программного кода, простота сопровождения, объектноориентированное программирование (ООП) и так далее.