Общие часто задаваемые вопросы по Python

Содержание

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

Что такое Python?

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

Чтобы узнать больше, начните с Учебник по Python. Ссылки Beginner’s Guide to Python ведут на другие вводные учебники и ресурсы для изучения Python.

Что такое Python Software Foundation?

Python Software Foundation - это независимая некоммерческая организация, которой принадлежат авторские права на Python версии 2.1 и новее. Миссия PSF заключается в продвижении технологий с открытым исходным кодом, связанных с языком программирования Python, и популяризации использования Python. Домашняя страница PSF находится по адресу https://www.python.org/psf/.

Пожертвования в PSF не облагаются налогом в США. Если вы используете Python и находите его полезным, пожалуйста, сделайте пожертвование через the PSF donation page.

Зачем вообще был создан Python?

Вот очень краткое изложение того, с чего все началось, написанное Гвидо ван Россумом:

У меня был большой опыт реализации интерпретируемого языка в группе ABC в CWI, и, работая с этой группой, я многое узнал о дизайне языка. Отсюда берут начало многие особенности Python, включая использование отступов для группировки утверждений и включение типов данных очень высокого уровня (хотя в Python все детали отличаются).

У меня был ряд претензий к языку ABC, но мне также нравились многие его особенности. Расширить язык ABC (или его реализацию) для устранения моих претензий было невозможно - фактически, отсутствие расширяемости было одной из его самых больших проблем. У меня был некоторый опыт использования Modula-2+, я разговаривал с разработчиками Modula-3 и читал отчет по Modula-3. Modula-3 является источником синтаксиса и семантики, используемых для исключений, и некоторых других возможностей Python.

Я работал в группе распределенных операционных систем Amoeba в CWI. Нам нужен был лучший способ администрирования системы, чем написание программ на C или сценариев оболочки Bourne, поскольку Amoeba имела свой собственный интерфейс системных вызовов, который не был легко доступен из оболочки Bourne. Мой опыт работы с обработкой ошибок в Amoeba заставил меня остро осознать важность исключений как функции языка программирования.

Мне пришло в голову, что язык сценариев с синтаксисом, подобным ABC, но с доступом к системным вызовам Amoeba, мог бы удовлетворить эту потребность. Я понял, что было бы глупо писать язык, специфичный для Amoeba, и решил, что мне нужен язык, который можно расширять в целом.

Во время рождественских каникул 1989 года у меня было много свободного времени, и я решил попробовать. В течение следующего года, продолжая в основном работать над ним в свое личное время, Python использовался в проекте Amoeba со все большим успехом, а отзывы коллег заставили меня добавить множество ранних улучшений.

В феврале 1991 года, после чуть более года разработки, я решил написать сообщение в USENET. Остальное находится в файле Misc/HISTORY.

Для чего подходит Python?

Python - это высокоуровневый язык программирования общего назначения, который можно применять для решения многих различных классов задач.

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

Как работает схема нумерации версий Python?

Версии Python нумеруются A.B.C или A.B. A - это основной номер версии - он увеличивается только для действительно серьезных изменений в языке. B - это номер минорной версии, который увеличивается при менее значительных изменениях. C - это микроуровень - он увеличивается для каждого выпуска исправлений. Более подробную информацию о выпусках исправлений см. в PEP 6.

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

Альфа-версии, бета-версии и версии-кандидаты на выпуск имеют дополнительный суффикс. Суффикс для альфа-версии - «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?

Последняя версия исходного дистрибутива Python всегда доступна на сайте python.org по адресу https://www.python.org/downloads/. Последние исходные тексты для разработки можно получить по адресу https://github.com/python/cpython/.

Дистрибутив исходного текста представляет собой gzipped tar-файл, содержащий полный исходный текст на языке Си, документацию в формате Sphinx, библиотечные модули Python, примеры программ и несколько полезных частей свободно распространяемого программного обеспечения. Исходный текст компилируется и запускается из коробки на большинстве платформ UNIX.

Обратитесь к Getting Started section of the Python Developer’s Guide за дополнительной информацией о получении исходного кода и его компиляции.

Как получить документацию по Python?

Стандартная документация для текущей стабильной версии Python доступна по адресу https://docs.python.org/3/. PDF, обычный текст и загружаемые HTML версии также доступны по адресу https://docs.python.org/3/download.html.

Документация написана на языке reStructuredText и обрабатывается программой the Sphinx documentation tool. Исходный текст reStructuredText для документации является частью дистрибутива исходных текстов Python.

Я никогда раньше не программировал. Есть ли учебник по Python?

Существует множество учебных пособий и книг. Стандартная документация включает Учебник по Python.

Обратитесь к the Beginner’s Guide, чтобы найти информацию для начинающих программистов Python, включая списки учебников.

Есть ли группа новостей или список рассылки, посвященные Python?

Существует группа новостей, comp.lang.python, и список рассылки, python-list. Группа новостей и список рассылки являются шлюзами друг для друга - если вы можете читать новости, то нет необходимости подписываться на список рассылки. comp.lang.python имеет высокий трафик, получая сотни сообщений каждый день, и читатели Usenet часто лучше справляются с этим объемом.

Объявления о новых выпусках программ и событиях можно найти в comp.lang.python.announce, модерируемом списке с низким трафиком, который получает около пяти сообщений в день. Он доступен как the python-announce mailing list.

Более подробную информацию о других списках рассылки и группах новостей можно найти на сайте https://www.python.org/community/lists/.

Как получить бета-тестовую версию Python?

Альфа- и бета-версии доступны по адресу https://www.python.org/downloads/. Все релизы анонсируются в группах новостей comp.lang.python и comp.lang.python.announce, а также на домашней странице Python по адресу https://www.python.org/; имеется RSS-канал новостей.

Вы также можете получить доступ к версии Python для разработки через Git. Подробности смотрите в The Python Developer’s Guide.

Как отправлять сообщения об ошибках и исправления для Python?

Чтобы сообщить об ошибке или отправить исправление, воспользуйтесь установкой Roundup по адресу https://bugs.python.org/.

Вы должны иметь учетную запись Roundup, чтобы сообщать об ошибках; это позволит нам связаться с вами, если у нас возникнут дополнительные вопросы. Это также позволит Roundup отправлять вам обновления по мере того, как мы будем работать над вашей ошибкой. Если вы ранее использовали SourceForge для сообщения об ошибках в Python, вы можете получить свой пароль Roundup через сайт Roundup password reset procedure.

Для получения дополнительной информации о том, как разрабатывается Python, обратитесь к the Python Developer’s Guide.

Есть ли опубликованные статьи о Python, на которые я могу сослаться?

Вероятно, лучше всего сослаться на свою любимую книгу о Python.

Самая первая статья о Python была написана в 1991 году и сейчас уже довольно устарела.

Гвидо ван Россум и Джелке де Бур, «Интерактивное тестирование удаленных серверов с помощью языка программирования Python», CWI Quarterly, том 4, выпуск 4 (декабрь 1991), Амстердам, стр. 283–303.

Есть ли книги по Python?

Да, их много, и еще больше публикуется. Список можно найти на вики python.org по адресу https://wiki.python.org/moin/PythonBooks.

Вы также можете найти в книжных интернет-магазинах слово «Python» и отфильтровать упоминания о Монти Пайтоне; или, возможно, поискать «Python» и «язык».

Где в мире находится сайт www.python.org?

Инфраструктура проекта Python расположена по всему миру и управляется командой Python Infrastructure Team. Подробности here.

Почему он называется Python?

Когда он начал внедрять Python, Гвидо ван Россум также читал опубликованные сценарии «Monty Python’s Flying Circus», комедийного сериала BBC 1970-х годов. Ван Россум подумал, что ему нужно короткое, уникальное и немного загадочное название, поэтому он решил назвать язык Python.

Должен ли я любить «Летающий цирк Монти Пайтона»?

Нет, но это помогает. :)

Python в реальном мире

Насколько стабилен Python?

Очень стабильный. Новые, стабильные версии выходят примерно каждые 6-18 месяцев с 1991 года, и это, похоже, будет продолжаться. Начиная с версии 3.9, Python будет выпускать новые крупные версии каждые 12 месяцев (PEP 602).

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

Последние стабильные релизы всегда можно найти на сайте Python download page. Существует две готовые к производству версии Python: 2.x и 3.x. Рекомендуемой версией является 3.x, которая поддерживается большинством широко используемых библиотек. Хотя версия 2.x все еще широко используется, it is not maintained anymore.

Сколько людей используют Python?

Вероятно, количество пользователей исчисляется миллионами, хотя точный подсчет затруднителен.

Python доступен для бесплатной загрузки, поэтому нет данных о продажах, и он доступен на многих сайтах и упакован со многими дистрибутивами Linux, поэтому статистика загрузки также не расскажет всей истории.

Группа новостей comp.lang.python очень активна, но не все пользователи Python пишут в эту группу или даже читают ее.

Были ли выполнены какие-либо значительные проекты на Python?

Список проектов, использующих Python, см. на сайте https://www.python.org/about/success. Если обратиться к материалам для past Python conferences, то можно обнаружить вклад многих компаний и организаций.

Среди известных проектов на Python - the Mailman mailing list manager и the Zope application server. Несколько дистрибутивов Linux, в частности Red Hat, частично или полностью написали на Python программу установки и системного администрирования. Среди компаний, использующих Python внутри компании, Google, Yahoo и Lucasfilm Ltd.

Какие новые разработки ожидаются для Python в будущем?

Смотрите https://www.python.org/dev/peps/ для предложений по улучшению Python (PEPs). PEP - это проектные документы, описывающие предлагаемую новую функцию для Python, содержащие краткое техническое описание и обоснование. Ищите PEP под названием «Python X.Y Release Schedule», где X.Y - это версия, которая еще не была публично выпущена.

Новые разработки обсуждаются на the python-dev mailing list.

Разумно ли предлагать несовместимые изменения в Python?

В целом, нет. В мире уже существуют миллионы строк кода на Python, поэтому любые изменения в языке, которые делают недействительными более чем очень малую часть существующих программ, не должны приветствоваться. Даже если вы можете предоставить программу преобразования, остается проблема обновления всей документации; о Python написано множество книг, и мы не хотим одним махом лишить их всех юридической силы.

Если необходимо изменить какую-либо функцию, необходимо обеспечить постепенное обновление. В PEP 5 описана процедура внедрения обратно несовместимых изменений при минимизации сбоев в работе пользователей.

Является ли Python хорошим языком для начинающих программистов?

Да.

До сих пор принято начинать обучение с процедурных и статически типизированных языков, таких как 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. PythonWin - это IDE для Windows. Пользователи Emacs будут рады узнать, что для Emacs существует очень хороший режим Python. Все эти среды программирования предоставляют подсветку синтаксиса, автоотметку и доступ к интерактивному интерпретатору во время написания кода. Полный список сред редактирования Python смотрите в the Python wiki.

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

Вернуться на верх