Документация Python неофициальный перевод
Содержание страницы

Общие вопросы по PythonGeneral Python FAQ

Содержание

Общая информацияGeneral Information

Что такое Python?What is Python?

Python – это интерпретируемый, интерактивный, объектно-ориентированный язык программирования. Он включает модули, исключения, динамическую типизацию, динамические типы данных очень высокого уровня и классы. Он поддерживает множество парадигм программирования помимо объектно-ориентированной, таких как процедурное и функциональное программирование. Python сочетает в себе большую мощность с очень ясным синтаксисом. У него есть интерфейсы ко многим системным вызовам и библиотекам, а также к различным оконным системам, и он расширяется на C или C++. Его также можно использовать как язык расширения для приложений, которым нужен программируемый интерфейс. Наконец, Python портативен: он работает на многих вариантах Unix, включая Linux и macOS, а также на Windows.

Чтобы узнать больше, начните с Учебник 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?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 – это высокоуровневый язык программирования общего назначения, который можно применять к задачам самого разного класса.

Язык поставляется с большой стандартной библиотекой, охватывающей такие области, как обработка строк (регулярные выражения, Unicode, вычисление различий между файлами), интернет-протоколы (HTTP, FTP, SMTP, XML-RPC, POP, IMAP, программирование CGI), программная инженерия (модульное тестирование, логирование, профилирование, разбор кода Python) и интерфейсы операционной системы (системные вызовы, файловые системы, сокеты TCP/IP). Посмотрите оглавление Стандартной библиотеки Python, чтобы получить представление о том, что доступно. Также доступны различные сторонние расширения. Обратитесь к индексу пакетов Python, чтобы найти интересующие вас пакеты.

Как работает схема нумерации версий Python?How does the Python version numbering scheme work?

Версии Python нумеруются как «A.B.C» или «A.B»:

  • A – это номер основной версии; он увеличивается только при действительно крупных изменениях в языке.

  • B – это номер вспомогательной версии; он увеличивается при менее значительных изменениях.

  • C – это номер микро-версии; он увеличивается с каждым выпуском исправлений.

См. PEP 6 для получения дополнительной информации о выпусках с исправлениями ошибок.

Не все выпуски являются выпусками с исправлениями ошибок. В преддверии нового крупного выпуска создается серия разработочных выпусков, обозначаемых как alpha, beta или release candidate. Альфа-версии – это ранние выпуски, в которых интерфейсы еще не окончательны; не следует удивляться изменениям интерфейса между двумя альфа-версиями. Бета-версии более стабильны, сохраняют существующие интерфейсы, но могут добавлять новые модули, а кандидаты на выпуск (release candidates) заморожены и не вносят изменений, за исключением необходимых для исправления критических ошибок.

Альфа-, бета-версии и кандидаты в релизы имеют дополнительный суффикс:

  • Суффикс альфа-версии – «aN», где N – небольшое число.

  • Суффикс бета-версии – «bN», где N – небольшое число.

  • Суффикс кандидата в релизы – «rcN», где N – небольшое число.

Иными словами, все версии с меткой 2.0aN предшествуют версиям с меткой 2.0bN, которые, в свою очередь, предшествуют версиям с меткой 2.0rcN, а те предшествуют версии 2.0.

Также могут встречаться номера версий с суффиксом «+», например «2.2+». Это невыпущенные версии, собранные непосредственно из репозитория разработки CPython. На практике после финального вспомогательного выпуска номер версии увеличивается до следующей второстепенной версии, которая становится версией «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/downloads/. Последние исходные коды разрабатываемой версии можно получить на https://github.com/python/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/downloads/. Все выпуски анонсируются в группах новостей comp.lang.python и comp.lang.python.announce, а также на домашней странице Python https://www.python.org/; доступна RSS-лента новостей.

Вы также можете получить доступ к разрабатываемой версии Python через Git. Подробности см. в руководстве разработчика Python.

Как отправить отчёты об ошибках и исправления для 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 расположена по всему миру и управляется командой Python Infrastructure Team. Подробности здесь.

Почему он называется 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 года, и эта тенденция, похоже, сохранится. Начиная с версии 3.9, Python будет выпускать крупные новые версии каждые 12 месяцев (PEP 602).

Разработчики выпускают релизы с исправлением ошибок старых версий, благодаря чему стабильность существующих выпусков постепенно повышается. Релизы с исправлением ошибок, обозначаемые третьим компонентом номера версии (например, 3.5.3, 3.6.2), управляются с целью стабильности; в такой релиз включаются только исправления известных проблем, и гарантируется, что интерфейсы останутся неизменными на протяжении всей серии таких релизов.

Последние стабильные версии всегда можно найти на странице загрузки Python. Существует две готовых к промышленному использованию версии Python: 2.x и 3.x. Рекомендуемая версия – 3.x, которая поддерживается большинством широко используемых библиотек. Хотя 2.x все еще широко используется, она больше не поддерживается.

Сколько людей используют 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]

С интерпретатором документация всегда под рукой у студента, пока он программирует.

Существуют также хорошие IDE для Python. IDLE – это кроссплатформенная IDE для Python, написанная на Python с использованием Tkinter. Пользователи Emacs будут рады узнать, что для Emacs есть очень хороший режим Python. Все эти среды программирования предоставляют подсветку синтаксиса, автоотступы и доступ к интерактивному интерпретатору во время кодирования. Обратитесь к вики Python для полного списка сред редактирования Python.

Если вы хотите обсудить использование Python в образовании, возможно, вас заинтересует присоединение к списку рассылки edu-sig.