Содержание страницы
Общие вопросы по Python¶General Python FAQ
Содержание
- Общие вопросы по Python
- Общая информация
- Что такое Python?
- Что такое Python Software Foundation?What is the Python Software Foundation?
- Есть ли ограничения авторского права на использование Python?Are there copyright restrictions on the use of Python?
- Зачем вообще был создан Python?Why was Python created in the first place?
- Для чего подходит Python?What is Python good for?
- Как работает схема нумерации версий Python?How does the Python version numbering scheme work?
- Как получить копию исходного кода Python?How do I obtain a copy of the Python source?
- Как получить документацию по Python?How do I get documentation on Python?
- Я никогда не программировал. Есть ли учебник по Python?I’ve never programmed before. Is there a Python tutorial?
- Существует ли группа новостей или список рассылки, посвящённые Python?Is there a newsgroup or mailing list devoted to Python?
- Как получить бета-версию Python?How do I get a beta test version of Python?
- Как отправлять отчёты об ошибках и патчи для Python?How do I submit bug reports and patches for Python?
- Есть ли опубликованные статьи о Python, на которые можно ссылаться?Are there any published articles about Python that I can reference?
- Есть ли книги по Python?Are there any books on Python?
- Где физически расположен сайт www.python.org?Where in the world is www.python.org located?
- Почему он называется Python?Why is it called Python?
- Обязательно ли любить «Монти Пайтон – Летающий цирк»?Do I have to like “Monty Python’s Flying Circus”?
- Python в реальном мире
- Насколько стабилен Python?
- Сколько людей используют Python?How many people are using Python?
- Были ли реализованы значительные проекты на Python?Have any significant projects been done in Python?
- Какие новые разработки ожидают Python в будущем?What new developments are expected for Python in the future?
- Разумно ли предлагать несовместимые изменения в Python?Is it reasonable to propose incompatible changes to Python?
- Совместим ли Python с проблемой 2000 года (Y2K)?Is Python Y2K (Year 2000) Compliant?
- Подходит ли Python для начинающих программистов?Is Python a good language for beginning programmers?
- Обновление Python
- Общая информация
Общая информация¶General Information
Что такое Python?¶What is Python?
Python – это интерпретируемый, интерактивный, объектно-ориентированный язык программирования. Он включает модули, исключения, динамическую типизацию, очень высокоуровневые динамические типы данных и классы. Python сочетает выдающуюся мощность с очень ясным синтаксисом. Он имеет интерфейсы ко многим системным вызовам и библиотекам, а также к различным оконным системам, и расширяем на C или C++. Он также может использоваться как язык расширения для приложений, которым требуется программируемый интерфейс. Наконец, Python переносим: он работает на многих вариантах Unix, на Mac и на ПК под MS-DOS, Windows, Windows NT и OS/2.
Чтобы узнать больше, начните с Учебник Python. Руководство для начинающих по Python содержит ссылки на другие вводные учебники и ресурсы для изучения Python.
Что такое Python Software Foundation?¶What is the Python Software Foundation?
Python Software Foundation – это независимая некоммерческая организация, владеющая авторскими правами на Python версий 2.1 и новее. Миссия PSF – развитие технологий с открытым исходным кодом, связанных с языком программирования Python, и популяризация его использования. Домашняя страница PSF находится по адресу http://www.python.org/psf/.
Пожертвования PSF освобождены от налогов в США. Если вы пользуетесь Python и находите его полезным, пожалуйста, сделайте взнос через страницу пожертвований PSF.
Есть ли авторские ограничения на использование Python?¶Are there copyright restrictions on the use of Python?
Вы можете делать с исходным кодом всё что угодно, если оставляете уведомления об авторских правах и воспроизводите их в любой документации по Python, которую создаёте. Если соблюдать правила авторского права, разрешается использовать Python в коммерческих целях, продавать копии Python в исходном или бинарном виде (с изменениями или без), а также продавать продукты, которые включают Python в той или иной форме. Мы, конечно, хотели бы знать обо всех случаях коммерческого использования Python.
Для получения дополнительных пояснений и ссылки на полный текст лицензии см. страницу лицензии PSF.
Логотип Python является товарным знаком, и в некоторых случаях требуется разрешение на его использование. Дополнительную информацию см. в Политике использования товарного знака.
Зачем вообще был создан Python?¶Why was Python created in the first place?
Вот очень краткое изложение того, с чего всё началось, написанное Гвидо ван Россумом:
У меня был большой опыт реализации интерпретируемого языка в группе ABC в CWI, и работа с этой группой многому меня научила в дизайне языков. Отсюда берут начало многие особенности Python, включая использование отступов для группировки операторов и наличие типов данных очень высокого уровня (хотя в Python детали совсем другие).
У меня был ряд претензий к языку ABC, но в то же время нравились многие его возможности. Расширить язык ABC (или его реализацию), чтобы устранить эти недостатки, было невозможно – собственно, отсутствие расширяемости было одной из его главных проблем. У меня был некоторый опыт работы с Modula-2+, я общался с разработчиками Modula-3 и читал отчёт по Modula-3. Оттуда берут начало синтаксис и семантика исключений, а также некоторые другие возможности Python.
Я работал в группе распределённой операционной системы Amoeba в CWI. Нам требовался более удобный способ системного администрирования, чем написание программ на C или сценариев Bourne shell, поскольку у Amoeba был собственный интерфейс системных вызовов, недоступный из Bourne shell. Мой опыт обработки ошибок в Amoeba остро показал мне важность исключений как языковой конструкции.
Мне пришло в голову, что сценарный язык с синтаксисом вроде ABC, но с доступом к системным вызовам Amoeba, решил бы эту задачу. Я понял, что было бы глупо создавать язык только для Amoeba, поэтому решил, что нужен язык, который можно расширять в целом.
На рождественских каникулах 1989 года у меня было много свободного времени, и я решил попробовать. В течение следующего года, по большей части работая над ним в своё свободное время, Python с возрастающим успехом использовался в проекте Amoeba, а отзывы коллег позволили мне внести множество ранних улучшений.
В феврале 1991 года, чуть более чем через год разработки, я решил опубликовать сообщение в USENET. Остальное – в файле Misc/HISTORY.
Для чего хорош Python?¶What is Python good for?
Python – это высокоуровневый язык программирования общего назначения, который можно применять к задачам самого разного класса.
The language comes with a large standard library that covers areas such as string processing (regular expressions, Unicode, calculating differences between files), Internet protocols (HTTP, FTP, SMTP, XML-RPC, POP, IMAP, CGI programming), software engineering (unit testing, logging, profiling, parsing Python code), and operating system interfaces (system calls, filesystems, TCP/IP sockets). Look at the table of contents for The Python Standard Library to get an idea of what’s available. A wide variety of third-party extensions are also available. Consult the Python Package Index to find packages of interest to you.
Как работает схема нумерации версий Python?¶How does the Python version numbering scheme work?
Python versions are numbered A.B.C or A.B. A is the major version number – it is only incremented for really major changes in the language. B is the minor version number, incremented for less earth-shattering changes. C is the micro-level – it is incremented for each bugfix release. See PEP 6 for more information about bugfix releases.
Не все выпуски являются выпусками с исправлениями ошибок. В преддверии нового крупного выпуска создается серия разработочных выпусков, обозначаемых как alpha, beta или release candidate. Альфа-версии – это ранние выпуски, в которых интерфейсы еще не окончательны; не следует удивляться изменениям интерфейса между двумя альфа-версиями. Бета-версии более стабильны, сохраняют существующие интерфейсы, но могут добавлять новые модули, а кандидаты на выпуск (release candidates) заморожены и не вносят изменений, за исключением необходимых для исправления критических ошибок.
Альфа-, бета-версии и версии-кандидаты имеют дополнительный суффикс. Суффикс для альфа-версии – «aN» для некоторого небольшого числа N, суффикс для бета-версии – «bN» для некоторого небольшого числа N, а суффикс для версии-кандидата – «cN» для некоторого небольшого числа N. Другими словами, все версии с меткой 2.0aN предшествуют версиям с меткой 2.0bN, которые предшествуют версиям с меткой 2.0cN, и они предшествуют 2.0.
Можно также встретить номера версий с суффиксом «+», например, «2.2+». Это незавершённые версии, собранные напрямую из основного репозитория Subversion. На практике после выпуска финальной минорной версии основной репозиторий Subversion переключается на следующую минорную версию, которая становится версией «a0», например, «2.4a0».
См. также документацию sys.version, sys.hexversion и sys.version_info.
Как получить копию исходного кода Python?¶How do I obtain a copy of the Python source?
Последний дистрибутив исходных кодов Python всегда доступен на python.org по адресу http://www.python.org/download/. Последние версии разрабатываемых исходных кодов можно получить через анонимный Subversion по адресу http://svn.python.org/projects/python/trunk.
Дистрибутив исходного кода представляет собой tar-архив, сжатый gzip, содержащий полный исходный код на C, документацию в формате Sphinx, модули библиотеки Python, примеры программ и несколько полезных свободно распространяемых программ. Исходный код компилируется и работает «из коробки» на большинстве платформ UNIX.
Обратитесь к FAQ разработчика для получения дополнительной информации о получении исходного кода и его компиляции.
Как получить документацию по Python?¶How do I get documentation on Python?
Стандартная документация для текущей стабильной версии Python доступна по адресу http://docs.python.org/. Версии в форматах PDF, обычного текста и HTML для скачивания также доступны по адресу http://docs.python.org/download.html.
Документация написана в формате reStructuredText и обрабатывается инструментом Sphinx . Исходники reStructuredText документации входят в состав дистрибутива исходного кода Python.
Я никогда раньше не программировал. Есть учебник по Python?¶I’ve never programmed before. Is there a Python tutorial?
Существует множество учебников и книг. Стандартная документация включает «Учебник Python».
Обратитесь к руководству для начинающих, чтобы найти информацию для начинающих программистов на Python, включая списки учебников.
Существует ли группа новостей или список рассылки, посвящённые Python?¶Is there a newsgroup or mailing list devoted to Python?
Существует группа новостей comp.lang.python и список рассылки python-list. Группа новостей и список рассылки связаны шлюзом – если вы можете читать новости, подписываться на список рассылки необязательно. comp.lang.python – высоконагруженный ресурс, ежедневно получающий сотни сообщений, и читатели Usenet обычно лучше справляются с таким объёмом.
Анонсы новых версий и событий можно найти в comp.lang.python.announce – это модерируемый список с низкой нагрузкой, получающий около пяти сообщений в день. Он доступен как список рассылки python-announce.
Дополнительная информация о других списках рассылки и группах новостей доступна по адресу http://www.python.org/community/lists/.
Как получить бета-версию Python?¶How do I get a beta test version of Python?
Альфа- и бета-версии доступны по адресу http://www.python.org/download/. Все выпуски анонсируются в группах новостей comp.lang.python и comp.lang.python.announce, а также на домашней странице Python по адресу http://www.python.org/; доступна RSS-лента новостей.
Вы также можете получить доступ к разрабатываемой версии Python через Subversion. Подробности – на странице http://www.python.org/dev/faq/.
Как отправить отчёты об ошибках и исправления для Python?¶How do I submit bug reports and patches for Python?
Чтобы сообщить об ошибке или отправить патч, воспользуйтесь установкой Roundup по адресу http://bugs.python.org/.
Для сообщения об ошибках необходимо иметь учетную запись Roundup; это позволяет нам связаться с вами, если у нас возникнут дополнительные вопросы. Это также позволит Roundup отправлять вам обновления по мере обработки вашей ошибки. Если вы ранее использовали SourceForge для сообщения об ошибках в Python, вы можете получить свой пароль Roundup через процедуру сброса пароля Roundup.
Для получения дополнительной информации о разработке Python обратитесь к руководству разработчика Python.
Есть ли опубликованные статьи о Python, на которые я могу ссылаться?¶Are there any published articles about Python that I can reference?
Вероятно, лучше всего сослаться на вашу любимую книгу о Python.
Самая первая статья о Python была написана в 1991 году и сейчас уже довольно устарела.
Гвидо ван Россум и Йелке де Бур, «Интерактивное тестирование удалённых серверов с использованием языка программирования Python», CWI Quarterly, том 4, выпуск 4 (декабрь 1991), Амстердам, стр. 283–303.
Есть ли книги по Python?¶Are there any books on Python?
Да, их много, и выходят новые. Список можно найти в вики python.org по адресу http://wiki.python.org/moin/PythonBooks.
Вы также можете поискать «Python» в интернет-магазинах книг и отфильтровать ссылки на Монти Пайтона; или попробовать поискать «Python» и «language».
Где физически находится www.python.org?¶Where in the world is www.python.org located?
В настоящее время он находится в Амстердаме, любезно предоставлен XS4ALL. Спасибо Томасу Воутерсу за работу по организации хостинга python.org.
Почему он называется Python?¶Why is it called Python?
Когда Гвидо ван Россум начал реализовывать Python, он также читал опубликованные сценарии «Летающего цирка Монти Пайтона», комедийного сериала BBC 1970-х годов. Ван Россум решил, что нужно короткое, уникальное и немного загадочное название, поэтому он назвал язык Python.
Обязательно ли нравится «Летающий цирк Монти Пайтона»?¶Do I have to like “Monty Python’s Flying Circus”?
Нет, но это помогает. :)
Python в реальном мире¶Python in the real world
Насколько стабилен Python?¶How stable is Python?
Очень стабилен. Новые стабильные выпуски выходят примерно каждые 6–18 месяцев с 1991 года, и, похоже, это продолжится. В настоящее время обычно между крупными релизами проходит около 18 месяцев.
Разработчики выпускают «исправляющие ошибки» (bugfix) версии старых релизов, поэтому стабильность существующих релизов постепенно улучшается. Релизы с исправлениями ошибок, обозначаемые третьим компонентом номера версии (например, 2.5.3, 2.6.2), управляются с прицелом на стабильность; только исправления известных проблем включаются в такой релиз, и гарантируется, что интерфейсы останутся неизменными на протяжении всей серии bugfix релизов.
Последние стабильные версии всегда можно найти на странице загрузки Python. На данный момент существует две рекомендованные готовые к производству версии, поскольку сейчас есть две ветки стабильных релизов: 2.x и 3.x. Python 3.x может быть менее полезен, чем 2.x, так как в настоящее время для Python 2 доступно больше стороннего программного обеспечения, чем для Python 3. Код Python 2 в целом не будет работать без изменений в Python 3.
Сколько людей используют Python?¶How many people are using Python?
Вероятно, десятки тысяч пользователей, хотя точное количество получить сложно.
Python доступен для бесплатной загрузки, поэтому нет данных о продажах; он доступен на многих сайтах и входит в состав многих дистрибутивов Linux, так что статистика загрузок тоже не даёт полной картины.
Группа новостей comp.lang.python очень активна, но не все пользователи Python публикуют в ней сообщения или даже читают её.
Были ли реализованы значительные проекты на Python?¶Have any significant projects been done in Python?
Список проектов, использующих Python, см. на http://python.org/about/success. Изучение материалов прошедших конференций Python покажет вклад многих различных компаний и организаций.
Известные проекты на Python включают менеджер списков рассылки Mailman и сервер приложений Zope. Некоторые дистрибутивы Linux, особенно Red Hat, написали часть или полностью свои программы установки и системного администрирования на Python. Компании, использующие Python внутри себя, включают Google, Yahoo и Lucasfilm Ltd.
Каких новых разработок ожидать для Python в будущем?¶What new developments are expected for Python in the future?
См. http://www.python.org/dev/peps/ для получения информации о предложениях по улучшению Python (PEP). PEP – это проектные документы, описывающие предлагаемую новую функциональность для Python, содержащие краткую техническую спецификацию и обоснование. Ищите PEP с заголовком «Python X.Y Release Schedule», где X.Y – версия, которая ещё не была публично выпущена.
Новые разработки обсуждаются в списке рассылки python-dev.
Разумно ли предлагать несовместимые изменения в Python?¶Is it reasonable to propose incompatible changes to Python?
В целом, нет. В мире уже существуют миллионы строк кода на Python, поэтому любое изменение языка, которое делает неработоспособной более чем очень малую часть существующих программ, должно быть встречено с неодобрением. Даже если вы можете предоставить программу преобразования, остаётся проблема обновления всей документации; о Python написано много книг, и мы не хотим обесценить их все одним махом.
Если возможность необходимо изменить, требуется обеспечить постепенный путь обновления. PEP 5 описывает процедуру внедрения обратно несовместимых изменений с минимальным нарушением работы пользователей.
Совместим ли Python с проблемой 2000 года (Y2K)?¶Is Python Y2K (Year 2000) Compliant?
По состоянию на август 2003 года серьёзных проблем не сообщалось, и совместимость с Y2K, похоже, не является проблемой.
Python выполняет очень мало вычислений с датами, а для тех, которые выполняет, полагается на функции библиотеки C. Python обычно представляет время либо как количество секунд с 1970 года, либо как кортеж (год, месяц, день, ...), где год выражается четырьмя цифрами, что делает ошибки Y2K маловероятными. Так что, если ваша библиотека C в порядке, Python также будет в порядке. Конечно, возможно, что конкретное приложение, написанное на Python, делает предположения о двузначных годах.
Поскольку Python распространяется бесплатно, абсолютных гарантий нет. Если возникнут непредвиденные проблемы, ответственность ложится на пользователя, а не на разработчиков, и предъявить иск о возмещении убытков некому. Уведомление об авторских правах Python содержит следующий отказ от ответственности:
4. PSF предоставляет Python 2.3 Лицензиату на условиях «КАК ЕСТЬ». PSF НЕ ДАЁТ НИКАКИХ ЗАЯВЛЕНИЙ ИЛИ ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ. В ЧАСТНОСТИ, НО НЕ ОГРАНИЧИВАЯСЬ ЭТИМ, PSF НЕ ДАЁТ И ОТКАЗЫВАЕТСЯ ОТ ЛЮБЫХ ЗАЯВЛЕНИЙ ИЛИ ГАРАНТИЙ В ОТНОШЕНИИ КОММЕРЧЕСКОЙ ЦЕННОСТИ ИЛИ ПРИГОДНОСТИ ДЛЯ КАКОЙ-ЛИБО КОНКРЕТНОЙ ЦЕЛИ И ТОГО, ЧТО ИСПОЛЬЗОВАНИЕ PYTHON 2.3 НЕ НАРУШИТ ПРАВА ТРЕТЬИХ ЛИЦ.
5. PSF НЕ НЕСЁТ ОТВЕТСТВЕННОСТИ ПЕРЕД ЛИЦЕНЗИАТОМ ИЛИ ДРУГИМИ ПОЛЬЗОВАТЕЛЯМИ PYTHON 2.3 ЗА ЛЮБЫЕ КОСВЕННЫЕ, ОСОБЫЕ ИЛИ ШТРАФНЫЕ УБЫТКИ ИЛИ ПОТЕРИ В РЕЗУЛЬТАТЕ МОДИФИКАЦИИ, РАСПРОСТРАНЕНИЯ ИЛИ ИНОГО ИСПОЛЬЗОВАНИЯ PYTHON 2.3 ИЛИ ЛЮБОГО ПРОИЗВОДНОГО ОТ НЕГО, ДАЖЕ ЕСЛИ БЫЛА СООБЩЕНА ВОЗМОЖНОСТЬ ТАКИХ УБЫТКОВ.
Хорошая новость в том, что если вы столкнулись с проблемой, у вас есть полный исходный код, чтобы отследить её и исправить. Это одно из преимуществ среды программирования с открытым исходным кодом.
Является ли Python хорошим языком для начинающих программистов?¶Is Python a good language for beginning programmers?
Да.
Всё ещё распространено начинать обучение студентов с процедурного и статически типизированного языка, такого как Pascal, C или подмножество C++ или Java. Студентам может быть полезнее изучать Python в качестве первого языка. Python имеет очень простой и последовательный синтаксис, большую стандартную библиотеку и, что самое важное, использование Python в начальном курсе программирования позволяет студентам сосредоточиться на важных навыках программирования, таких как декомпозиция задачи и проектирование типов данных. С помощью Python студенты могут быстро познакомиться с базовыми концепциями, такими как циклы и процедуры. Вероятно, они даже смогут работать с пользовательскими объектами уже на первом курсе.
Для студента, который никогда не программировал, использование статически типизированного языка кажется неестественным. Это добавляет дополнительную сложность, которую студент должен освоить, и замедляет темп курса. Студенты пытаются научиться мыслить как компьютер, декомпозировать задачи, проектировать непротиворечивые интерфейсы и инкапсулировать данные. Хотя изучение статически типизированного языка важно в долгосрочной перспективе, оно не обязательно является лучшей темой для первого курса программирования.
Многие другие аспекты Python делают его хорошим первым языком. Как и Java, Python имеет большую стандартную библиотеку, поэтому студентам можно давать задания по программированию уже в самом начале курса, которые делают что-то. Задания не ограничиваются стандартным калькулятором с четырьмя функциями и программами проверки баланса. Используя стандартную библиотеку, студенты могут получить удовлетворение от работы над реальными приложениями, изучая основы программирования. Использование стандартной библиотеки также учит студентов повторному использованию кода. Сторонние модули, такие как PyGame, также помогают расширить возможности студентов.
Интерактивный интерпретатор Python позволяет студентам тестировать возможности языка во время программирования. Они могут держать окно с работающим интерпретатором, пока вводят исходный код программы в другом окне. Если они не могут вспомнить методы для списка, они могут сделать что-то вроде этого:
>>> L = []
>>> dir(L)
['append', 'count', 'extend', 'index', 'insert', 'pop', 'remove',
'reverse', 'sort']
>>> help(L.append)
Help on built-in function append:
append(...)
L.append(object) -- append object to end
>>> L.append(1)
>>> L
[1]
С интерпретатором документация всегда рядом со студентом, когда он программирует.
Существуют также хорошие IDE для Python. IDLE – это кроссплатформенная IDE для Python, написанная на Python с использованием Tkinter. PythonWin – это IDE для Windows. Пользователи Emacs будут рады узнать, что существует очень хороший режим Python для Emacs. Все эти среды программирования предоставляют подсветку синтаксиса, автоматические отступы и доступ к интерактивному интерпретатору во время написания кода. Обратитесь к http://www.python.org/editors/ для получения полного списка сред редактирования Python.
Если вы хотите обсудить использование Python в образовании, возможно, вас заинтересует присоединение к списку рассылки edu-sig.
Обновление Python¶Upgrading Python
Что это за модуль bsddb185, на который постоянно жалуется моё приложение?¶What is this bsddb185 module my application keeps complaining about?
Начиная с Python 2.3, в дистрибутив включён пакет PyBSDDB <http://pybsddb.sf.net/> в качестве замены старого модуля bsddb. Он содержит функции, обеспечивающие обратную совместимость на уровне API, но требует более новую версию библиотеки Berkeley DB. Файлы, созданные старым модулем bsddb, нельзя открыть напрямую с помощью нового модуля.
Используя вашу старую версию Python и два скрипта, входящие в состав Python 2.3 (db2pickle.py и pickle2db.py в каталоге Tools/scripts), вы можете преобразовать файлы старой базы данных в новый формат. Запустите скрипт db2pickle.py в вашей старой версии Python, чтобы преобразовать её в pickle, например:
python2.2 <pathto>/db2pickley.py database.db database.pck
Переименуйте файл базы данных:
mv database.db olddatabase.db
Теперь преобразуйте файл pickle в базу данных нового формата:
python <pathto>/pickle2db.py database.db database.pck
Конкретные команды будут различаться в зависимости от особенностей вашей установки. Полные подробности о работе этих двух скриптов см. в строке документации в начале каждого из них.