# Загальні поширені запитання щодо Python

## Загальна інформація

### Що таке Python?

Python — це інтерпретована, інтерактивна, об’єктно-орієнтована мова програмування. Він містить модулі, винятки, динамічну типізацію, динамічні типи даних дуже високого рівня та класи. Він підтримує кілька парадигм програмування, окрім об’єктно-орієнтованого програмування, наприклад процедурне та функціональне програмування. Python поєднує в собі надзвичайну потужність із дуже чітким синтаксисом. Він має інтерфейси для багатьох системних викликів і бібліотек, а також для різних віконних систем і розширюється на C або C++. Його також можна використовувати як мову розширення для програм, яким потрібен програмований інтерфейс. Нарешті, Python портативний: він працює на багатьох варіантах Unix, включаючи Linux і macOS, а також на Windows.

Щоб дізнатися більше, почніть з Підручник з Python. Посібник для початківців з Python містить посилання на інші вступні посібники та ресурси для вивчення Python.

### Що таке Python Software Foundation?

Python Software Foundation — це незалежна некомерційна організація, яка володіє авторськими правами на Python версії 2.1 і новіших. Місія PSF полягає в тому, щоб просувати технологію з відкритим кодом, пов’язану з мовою програмування Python, і оприлюднювати використання Python. Домашня сторінка PSF знаходиться за адресою https://www.python.org/psf/.

Пожертви на користь PSF звільняються від податків у США. Якщо ви використовуєте Python і вважаєте його корисним, зробіть свій внесок через сторінку пожертв PSF.

### Чи існують обмеження авторського права на використання Python?

Ви можете робити з вихідним кодом усе, що завгодно, за умови, що ви залишите авторські права та відобразите ці авторські права в будь-якій документації щодо Python, яку ви створюєте. Якщо ви дотримуєтеся правил авторського права, можна використовувати Python для комерційного використання, продавати копії Python у вихідній чи двійковій формі (модифікованій чи немодифікованій) або продавати продукти, які в тій чи іншій формі містять Python. Звичайно, ми все ще хотіли б знати про комерційне використання Python.

See the license page to find further explanations and the full text of the PSF License.

Логотип Python є торговою маркою, і в деяких випадках для його використання потрібен дозвіл. Зверніться до Політики використання торговельних марок для отримання додаткової інформації.

### Чому взагалі був створений 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 — це мова програмування високого рівня загального призначення, яку можна застосовувати до багатьох різних класів задач.

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), 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 Стандартна бібліотека Python 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?

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 – it is incremented for less earth-shattering changes.

- C is the micro version number – it is incremented for each bugfix release.

Not all releases are bugfix releases. In the run-up to a new feature release, a series of development releases are made, denoted as alpha, beta, or release candidate. Alphas are early releases in which interfaces aren’t yet finalized; it’s not unexpected to see an interface change between two alpha releases. Betas are more stable, preserving existing interfaces but possibly adding new modules, and release candidates are frozen, making no changes except as needed to fix critical bugs.

Alpha, beta and release candidate versions have an additional suffix:

- The suffix for an alpha version is «aN» for some small number N.

- The suffix for a beta version is «bN» for some small number N.

- The suffix for a release candidate version is «rcN» for some small number N.

In other words, all versions labeled 2.0aN precede the versions labeled 2.0bN, which precede versions labeled 2.0rcN, and those precede 2.0.

Ви також можете знайти номери версій із суфіксом «+», напр. «2,2+». Це неопубліковані версії, створені безпосередньо з репозиторію розробки CPython. На практиці, після створення остаточного мінорного випуску, версія збільшується до наступної мінорної версії, яка стає версією «a0», напр. «2.4a0».

See the Developer’s Guide for more information about the development cycle, and PEP 387 to learn more about Python’s backward compatibility policy. See also the documentation for `sys.version`, `sys.hexversion`, and `sys.version_info`.

### Як отримати копію вихідного коду Python?

Найновіший вихідний код Python завжди доступний на сайті python.org за адресою https://www.python.org/downloads/. Останні джерела розробки можна отримати на https://github.com/python/cpython/.

Дистрибутив вихідного коду — це файл tar у форматі gzip, що містить повний вихідний код C, документацію у форматі Sphinx, модулі бібліотеки Python, приклади програм і кілька корисних частин програмного забезпечення, яке вільно розповсюджується. Джерело компілюється та запускається з коробки на більшості платформ UNIX.

Зверніться до розділу «Початок роботи» Посібника розробника Python, щоб дізнатися більше про отримання вихідного коду та його компіляцію.

### Як отримати документацію на Python?

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

The documentation is written in reStructuredText and processed by the Sphinx documentation tool. The reStructuredText source for the documentation is part of the Python source distribution.

### Я ніколи раніше не програмував. Чи є підручник з Python?

Доступно багато підручників і книг. Стандартна документація включає Підручник з Python.

Зверніться до Посібника для початківців, щоб знайти інформацію для початківців програмістів Python, включаючи списки навчальних посібників.

### Чи існує група новин або список розсилки, присвячений Python?

Є група новин comp.lang.python і список розсилки python-list. Група новин і список розсилки пов’язані один з одним — якщо ви можете читати новини, немає необхідності підписуватися на список розсилки. comp.lang.python має високий трафік, отримує сотні публікацій щодня, і читачам Usenet часто легше впоратися з цим обсягом.

Announcements of new software releases and events can be found in comp.lang.python.announce, a low-traffic moderated list that receives about five postings per day. It’s available as 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. Перегляньте Посібник розробника Python для отримання додаткової інформації.

### Як надіслати звіти про помилки та виправлення для Python?

To report a bug or submit a patch, use the issue tracker at https://github.com/python/cpython/issues.

Щоб дізнатися більше про те, як розробляється Python, зверніться до Посібника розробника Python.

### Чи є опубліковані статті про Python, на які я можу посилатися?

Мабуть, найкраще процитувати вашу улюблену книгу про Python.

The very first article about Python was written in 1991 and is now quite outdated.

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

### Чи є книги про Python?

Так, їх багато, і публікується більше. Перегляньте список у вікі python.org за адресою https://wiki.python.org/moin/PythonBooks.

Ви також можете шукати в книжкових онлайн-магазинах «Python» і відфільтрувати посилання на Monty Python; або, можливо, шукайте «Python» і «мова».

### Де у світі знаходиться www.python.org?

The Python project’s infrastructure is located all over the world and is managed by the Python Infrastructure Team. Details here.

### Чому він називається Python?

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

### Чи обов’язково мені повинен подобатись «Летючий цирк Монті Пайтона»?

Ні, але допомагає. :)

## Python у реальному світі

### Наскільки стабільний Python?

Very stable. New, stable releases have been coming out roughly every 6 to 18 months since 1991, and this seems likely to continue. As of version 3.9, Python will have a new feature release every 12 months (PEP 602).

The developers issue bugfix releases of older versions, so the stability of existing releases gradually improves. Bugfix releases, indicated by a third component of the version number (e.g. 3.5.3, 3.6.2), are managed for stability; only fixes for known problems are included in a bugfix release, and it’s guaranteed that interfaces will remain the same throughout a series of bugfix releases.

The latest stable releases can always be found on the Python download page. Python 3.x is the recommended version and supported by most widely used libraries. Python 2.x is not maintained anymore.

### Скільки людей використовують Python?

Ймовірно, є мільйони користувачів, хоча важко отримати точну кількість.

Python доступний для безкоштовного завантаження, тому немає даних про продажі, і він доступний на багатьох різних сайтах і входить до складу багатьох дистрибутивів Linux, тому статистика завантажень також не говорить усієї історії.

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

### Чи були якісь значні проекти виконані на Python?

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

High-profile Python projects include the Mailman mailing list manager and the Zope application server. Several Linux distributions, most notably Red Hat, have written part or all of their installer and system administration software in Python. Companies that use Python internally include Google, Yahoo, and Lucasfilm Ltd.

### Які нові розробки очікуються для Python у майбутньому?

See https://peps.python.org/ for the Python Enhancement Proposals (PEPs). PEPs are design documents describing a suggested new feature for Python, providing a concise technical specification and a rationale. Look for a PEP titled «Python X.Y Release Schedule», where X.Y is a version that hasn’t been publicly released yet.

New development is discussed on 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]

З інтерпретатором документація завжди є доступною для студента, оскільки він програмує.

There are also good IDEs for Python. IDLE is a cross-platform IDE for Python that is written in Python using Tkinter. 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.