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

Содержание

Общие сведения

Что такое Python?

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

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

Что такое фонд программного обеспечения Python?

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

Существуют ли ограничения авторских прав на использование Python?

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

Для получения дополнительных пояснений и ссылки на полный текст лицензии см. раздел страница лицензии PSF.

Логотип Python имеет торговую марку, и в некоторых случаях для его использования требуется разрешение. Для получения дополнительной информации обратитесь к Политика использования товарных знаков.

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

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

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

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

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

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

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

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

Для чего Python хорош?

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

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

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

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

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

Альфа-версии, бета-версии и версии-кандидаты имеют дополнительный суффикс. Суффикс для альфа-версии - «aN» для некоторого небольшого числа N, суффикс для бета-версии - «bN» для некоторого небольшого числа N, а суффикс для версии- кандидата выпуска равен «cN» для небольшого числа N. Другими словами, все версии, помеченные 2.0aN, предшествуют версиям, обозначенным 2.0bN, которые предшествуют версиям, обозначенным 2.0cN, и те предшествуют 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 файл, содержащий полностью все исходники C файлов, документацию в формате Sphinx, Python библиотечные модули, примерные программы и несколько полезных частей свободно распространяемого программного обеспечения. Исходный файл будет компилироваться и заканчиваться на большинстве платформ UNIX.

Проконсультируйтесь с разделом «Начало работы» Руководства разработчика Python для большей информации о получении исходного кода и его компиляции.

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

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

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

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

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

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

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

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

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

Более подробную информацию о других списках рассылки и группах новостей можно найти по адресу 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. Дополнительные сведения см. в разделе Руководство разработчика Python.

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

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

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

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

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

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

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

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

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

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

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

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

Инфраструктура проекта Python расположена по всему миру и управляется Командой инфраструктуры Python. Подробности здесь.

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

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

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

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

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

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

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

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

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

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

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

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

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

Известные Python проекты включают в себя менеджер списков рассылки Mailman и сервер приложений Zope. Несколько дистрибутивов Linux, особенно Red Hat, написали часть или все свои программы установки и системного администрирования на Python. Компании, которые используют Python внутри себя, включают Google, Yahoo и Lucasfilm Ltd.

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

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

Новая разработка обсуждается на списке рассылки python-dev.

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

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