Содержание страницы
Общие вопросы по 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 для начинающих программистов?Is Python a good language for beginning programmers?
- Общая информация
Общая информация¶General Information
Что такое Python?¶What is Python?
Python – это интерпретируемый, интерактивный, объектно-ориентированный язык программирования. Он включает модули, исключения, динамическую типизацию, очень высокоуровневые динамические данные tипы и классы. Python сочетает огромную мощность с очень ясным синтаксисом. Он имеет интерфейсы ко многим системным вызовам и библиотекам, а также к различным оконным системам, и расширяется с помощью C или C++. Его также можно использовать как язык расширения для приложений, которым нужен программируемый интерфейс. И наконец, Python переносим: он работает на многих вариантах Unix, на Mac и на Windows 2000 и новее.
Чтобы узнать больше, начните с Учебник Python. Руководство для начинающих по Python содержит ссылки на другие вводные учебники и ресурсы для изучения Python.
Что такое Python Software Foundation?¶What is the Python Software Foundation?
Python Software Foundation – это независимая некоммерческая организация, которая владеет авторскими правами на Python версии 2.1 и новее. Миссия PSF – развивать технологии открытого исходного кода, связанные с языком программирования Python, и популяризировать использование Python. Домашняя страница PSF находится по адресу https://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 по адресу https://www.python.org/download/. Последние версии разрабатываемых исходных кодов можно получить через анонимный доступ к Mercurial по адресу https://hg.python.org/cpython.
Дистрибутив исходного кода представляет собой tar-архив, сжатый gzip, содержащий полный исходный код на C, документацию в формате Sphinx, модули библиотеки Python, примеры программ и несколько полезных свободно распространяемых программ. Исходный код компилируется и работает «из коробки» на большинстве платформ UNIX.
Обратитесь к разделу «Начало работы» в руководстве разработчика Python, чтобы узнать, как получить исходный код и скомпилировать его.
Как получить документацию по Python?¶How do I get documentation on Python?
Стандартная документация для текущей стабильной версии Python доступна по адресу https://docs.python.org/3/. PDF, обычный текст и версии HTML для скачивания также доступны по адресу https://docs.python.org/3/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.
Дополнительную информацию о других списках рассылки и группах новостей можно найти на https://www.python.org/community/lists/.
Как получить бета-версию Python?¶How do I get a beta test version of Python?
Альфа- и бета-версии доступны на https://www.python.org/download/. Все выпуски анонсируются в группах новостей comp.lang.python и comp.lang.python.announce и на домашней странице Python по адресу https://www.python.org/; также доступна RSS-лента новостей.
Также можно получить доступ к разрабатываемой версии Python через Mercurial. Подробнее см. https://docs.python.org/devguide/faq.html.
Как отправить отчёты об ошибках и исправления для Python?¶How do I submit bug reports and patches for Python?
Для сообщения об ошибке или отправки исправления воспользуйтесь установкой Roundup по адресу https://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 по адресу https://wiki.python.org/moin/PythonBooks.
Вы также можете поискать «Python» в интернет-магазинах книг и отфильтровать ссылки на Монти Пайтона; или попробовать поискать «Python» и «language».
Где физически находится www.python.org?¶Where in the world is www.python.org located?
Инфраструктура проекта Python расположена по всему миру. www.python.org любезно размещён у Rackspace с кэшированием CDN от Fastly. Upfront Systems размещает bugs.python.org. Многие другие сервисы Python, такие как вики, размещены в Oregon State University Open Source Lab.
Почему он называется 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, см. на https://www.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?
См. https://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 хорошим языком для начинающих программистов?¶Is Python a good language for beginning programmers?
Да.
Всё ещё распространено начинать обучение студентов с процедурного и статически типизированного языка, такого как Pascal, C или подмножество C++ или Java. Студентам может быть полезнее изучать Python в качестве первого языка. Python имеет очень простой и последовательный синтаксис, большую стандартную библиотеку и, что самое важное, использование Python в начальном курсе программирования позволяет студентам сосредоточиться на важных навыках программирования, таких как декомпозиция задачи и проектирование типов данных. С помощью Python студенты могут быстро познакомиться с базовыми концепциями, такими как циклы и процедуры. Вероятно, они даже смогут работать с пользовательскими объектами уже на первом курсе.
Для студента, который никогда не программировал, использование статически типизированного языка кажется неестественным. Это добавляет дополнительную сложность, которую студент должен освоить, и замедляет темп курса. Студенты пытаются научиться мыслить как компьютер, декомпозировать задачи, проектировать непротиворечивые интерфейсы и инкапсулировать данные. Хотя изучение статически типизированного языка важно в долгосрочной перспективе, оно не обязательно является лучшей темой для первого курса программирования.
Многие другие аспекты Python делают его хорошим первым языком. Как и Java, Python имеет большую стандартную библиотеку, поэтому студентам можно давать задания по программированию уже в самом начале курса, которые делают что-то. Задания не ограничиваются стандартным калькулятором с четырьмя функциями и программами проверки баланса. Используя стандартную библиотеку, студенты могут получить удовлетворение от работы над реальными приложениями, изучая основы программирования. Использование стандартной библиотеки также учит студентов повторному использованию кода. Сторонние модули, такие как PyGame, также помогают расширить возможности студентов.
Интерактивный интерпретатор Python позволяет студентам тестировать возможности языка во время программирования. Они могут держать окно с работающим интерпретатором, пока вводят исходный код программы в другом окне. Если они не могут вспомнить методы для списка, они могут сделать что-то вроде этого:
>>> L = []
>>> dir(L)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__',
'__dir__', '__doc__', '__eq__', '__format__', '__ge__',
'__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__',
'__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__',
'__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__',
'__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__',
'__sizeof__', '__str__', '__subclasshook__', 'append', 'clear',
'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove',
'reverse', 'sort']
>>> [d for d in dir(L) if '__' not in d]
['append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
>>> help(L.append)
Help on built-in function append:
append(...)
L.append(object) -> None -- append object to end
>>> L.append(1)
>>> L
[1]
С интерпретатором документация всегда рядом со студентом, когда он программирует.
There are also good IDEs for Python. IDLE is a cross-platform IDE for Python that is written in Python using Tkinter. PythonWin is a Windows-specific IDE. Emacs users will be happy to know that there is a very good Python mode for Emacs. All of these programming environments provide syntax highlighting, auto-indenting, and access to the interactive interpreter while coding. Consult the Python wiki for a full list of Python editing environments.
Если вы хотите обсудить использование Python в образовании, возможно, вас заинтересует присоединение к списку рассылки edu-sig.