Содержание страницы
Общие вопросы по Python¶General 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?¶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 – это высокоуровневый язык программирования общего назначения, который можно применять к задачам самого разного класса.
Язык поставляется с обширной стандартной библиотекой, охватывающей такие области, как обработка строк (регулярные выражения, Unicode, вычисление различий между файлами), интернет-протоколы (HTTP, FTP, SMTP, XML-RPC, POP, IMAP), программная инженерия (модульное тестирование, журналирование, профилирование, разбор кода Python) и интерфейсы операционной системы (системные вызовы, файловые системы, сокеты TCP/IP). Посмотрите оглавление «Стандартной библиотеки Python», чтобы понять, что доступно. Также существует множество сторонних расширений. Воспользуйтесь Индексом пакетов Python, чтобы найти интересующие вас пакеты.
Как работает схема нумерации версий Python?¶How does the Python version numbering scheme work?
Версии Python нумеруются как «A.B.C» или «A.B»:
A – это номер основной версии; он увеличивается только при действительно крупных изменениях в языке.
B – это номер вспомогательной версии; он увеличивается при менее значительных изменениях.
C – это номер микро-версии; он увеличивается с каждым выпуском исправлений.
Не все выпуски являются выпусками с исправлениями ошибок. В преддверии нового выпуска с функциональными возможностями выпускается серия разработочных версий, обозначаемых как альфа, бета или кандидат в релизы. Альфа-версии – это ранние выпуски, в которых интерфейсы ещё не окончательны; не стоит удивляться, если между двумя альфа-версиями интерфейс изменится. Бета-версии более стабильны, сохраняют существующие интерфейсы, но могут добавлять новые модули, а кандидаты в релизы заморожены и не вносят изменений, кроме необходимых для исправления критических ошибок.
Альфа-, бета-версии и кандидаты в релизы имеют дополнительный суффикс:
Суффикс альфа-версии – «aN», где N – небольшое число.
Суффикс бета-версии – «bN», где N – небольшое число.
Суффикс кандидата в релизы – «rcN», где N – небольшое число.
Иными словами, все версии с меткой 2.0aN предшествуют версиям с меткой 2.0bN, которые, в свою очередь, предшествуют версиям с меткой 2.0rcN, а те предшествуют версии 2.0.
Также могут встречаться номера версий с суффиксом «+», например «2.2+». Это невыпущенные версии, собранные непосредственно из репозитория разработки CPython. На практике после финального вспомогательного выпуска номер версии увеличивается до следующей второстепенной версии, которая становится версией «a0», например «2.4a0».
См. Руководство разработчика для получения дополнительной информации о цикле разработки, а также PEP 387, чтобы узнать больше о политике обратной совместимости Python. См. также документацию по 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?
Чтобы сообщить об ошибке или отправить исправление, используйте систему отслеживания проблем на https://github.com/python/cpython/issues.
Для получения дополнительной информации о разработке 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 3.x – рекомендуемая версия, поддерживаемая большинством широко используемых библиотек. Python 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://peps.python.org/ для предложений по улучшению 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.