Python (найчастіше вживане прочитання — «Па́йтон», запозичено назву з британського шоу Монті Пайтон) — інтерпретована об'єктно-орієнтована мова програмування високого рівня із суворою динамічною типізацією. Розроблена в 1990 році Гвідо ван Россумом. Структури даних високого рівня разом із динамічною семантикою та динамічним зв'язуванням роблять її привабливою для швидкої розробки програм, а також як засіб поєднування наявних компонентів. Python підтримує модулі та пакети модулів, що сприяє модульності та повторному використанню коду. Інтерпретатор Python та стандартні бібліотеки доступні як у скомпільованій, так і у вихідній формі на всіх основних платформах. В мові програмування Python підтримується кілька парадигм програмування, зокрема: об'єктно-орієнтована, процедурна, аспектно-орієнтована та функціональна.
Python | |
---|---|
Парадигма | кілька парадигм: імперативна, функціональна, об'єктно-орієнтована |
Дата появи | 20 лютого 1991[1] |
Творці | Ґвідо ван Россум[1] |
Розробник | Гвідо ван Россум |
Останній реліз | 3.12.0 / 2 жовтня, 2023 , 2.7.18 / 20 квітня, 2020 |
Тестова версія | 3.13.0 alpha 1 / 13 жовтня, 2023 |
Система типізації | качина типізація, динамічна типізація[d] і d |
Діалекти | Python 3.12, Python 2.7 (підтримка закінчена 1 січня 2020 року.) |
Під впливом від | ABC, C, Haskell, [en], Lisp, [en], Perl, Smalltalk, Tcl |
Вплинула на | Boo, Groovy, D |
Мова реалізації | Python[6] і C[7] |
Операційна система | Багатоплатформова |
Ліцензія | Python Software Foundation License |
Звичайні розширення файлів | .py, .pyw, .pyc, .pyo, .pyd |
Вебсайт | www.python.org |
|
Переваги
Серед основних її переваг можна назвати такі:
- чистий синтаксис (для виділення блоків слід використовувати відступи);
- переносність програм (що властиве більшості інтерпретованих мов);
- стандартний дистрибутив має велику кількість корисних модулів (включно з модулем для розробки графічного інтерфейсу);
- можливість використання Python в діалоговому режимі (дуже корисне для експериментування та розв'язання простих задач);
- стандартний дистрибутив має просте, але разом із тим досить потужне середовище розробки, яке називається IDLE і яке написане мовою Python;
- зручний для розв'язання математичних проблем (має засоби роботи з комплексними числами, може оперувати з цілими числами довільної величини, у діалоговому режимі може використовуватися як потужний калькулятор);
- відкритий код (можливість редагувати його іншими користувачами).
Python має ефективні структури даних високого рівня та простий, але ефективний підхід до об'єктно-орієнтованого програмування. Елегантний синтаксис Python, динамічна обробка типів, а також те, що це інтерпретована мова, роблять її ідеальною для написання скриптів та швидкої розробки прикладних програм у багатьох галузях на більшості платформ.
Інтерпретатор мови Python і багата Стандартна бібліотека (як вихідні тексти, так і бінарні дистрибутиви для всіх основних операційних систем) можуть бути отримані з сайту Python www.python.org [ 17 квітня 2018 у Wayback Machine.], і можуть вільно розповсюджуватися. Цей самий сайт має дистрибутиви та посилання на численні модулі, програми, утиліти та додаткову документацію.
Інтерпретатор мови Python може бути розширений функціями та типами даних, розробленими на C чи C++ (або на іншій мові, яку можна викликати із C). Python також зручна як мова розширення для прикладних програм, що потребують подальшого налагодження.
Історія
Розробка мови Python була розпочата в кінці 1980-х років співробітником Гвідо ван Россумом. Для розподіленої ОС Amoeba потрібна була розширювана скриптова мова, і Гвідо почав писати Python на дозвіллі, запозичивши деякі напрацювання для мови ABC (Гвідо брав участь у розробці цієї мови, орієнтованої на навчання програмування). У лютому 1991 року Гвідо опублікував вихідний текст в групі новин alt.sources. Мова почала вільно поширюватися через Інтернет і сподобалася іншим програмістам. З 1991 року Python є цілком об'єктно-орієнтованим. Python також запозичив багато рис таких мов, як C, , [en] і [en], й окремі риси функціонального програмування з Ліспу.
Назва мови виникла зовсім не від виду плазунів. Автор назвав мову на честь популярного британського комедійного серіалу 70-х років «Повітряний цирк Монті Пайтона». Втім, все одно назву мови частіше асоціюють саме зі змією, ніж з фільмом — піктограми файлів в KDE або в Windows, і навіть емблема на сайті python.org зображують зміїну голову.
Наявність дружньої спільноти користувачів, поряд з дизайнерською інтуїцією Гвідо, вважається одним з головних факторів успіху Python. Розвиток мови відбувається згідно з чітко регламентованими процесами створення, обговорення, відбору та реалізації документів PEP (Python Enhancement Proposal) — пропозицій щодо розвитку Python.
3 грудня 2008 року, після тривалого тестування, вийшла перша версія Python 3000 (або Python 3.0, також використовується скорочена Py3k). У Python 3000 усунено багато недоліків архітектури з максимально можливим (але не повним) збереженням сумісності зі старішими версіями. На сьогодні підтримуються Python версії 3.
У 2023 році, найпопулярнішою мовою програмування серед IT-спеціалістів згідно рейтингу IEEE Spectrum стала Python. Рейтинг 2023 року охоплював 59 мов програмування.
Філософія
Розробники мови Python є прихильниками певної філософії програмування, яку називають «The Zen of Python» («Дзен Пайтона»). Її текст можна отримати в інтерпретаторі Python за допомогою команди import this
(лише один раз за сесію). Автором цієї філософії вважається [en].
Текст філософії:
- Гарне краще за потворне.
- Явне краще за неявне.
- Просте краще за складне.
- Складне краще за заплутане.
- Плоске краще за вкладене.
- Розріджене краще за щільне.
- Легкість читання має значення.
- Особливі випадки не є настільки особливими, щоб порушувати правила.
- Хоча практичність є важливішою за бездоганність.
- Помилки ніколи не повинні проходити непомітно.
- Якщо їх приховування не прописано явно.
- Зустрівши неоднозначність, опирайтесь спокусі вгадати.
- Має бути один — і, бажано, тільки один — очевидний спосіб зробити це.
- Хоча спочатку він може бути й не очевидним, якщо ви не голландець.
- Зараз — краще, ніж ніколи.
- Хоча ніколи, найчастіше, — краще, ніж просто зараз.
- Якщо реалізацію важко пояснити — задум поганий.
- Якщо реалізацію легко пояснити — можливо, задум добрий.
- Простори імен — чудова річ, тож робімо їх більше!
Оригінальний текст (англ.)
- Beautiful is better than ugly.
- Explicit is better than implicit.
- Simple is better than complex.
- Complex is better than complicated.
- Flat is better than nested.
- Sparse is better than dense.
- Readability counts.
- Special cases aren’t special enough to break the rules.
- Although practicality beats purity.
- Errors should never pass silently.
- Unless explicitly silenced.
- In the face of ambiguity, refuse the temptation to guess.
- There should be one — and preferably only one — obvious way to do it.
- Although that way may not be obvious at first unless you’re Dutch.
- Now is better than never.
- Although never is often better than 'right now'.
- If the implementation is hard to explain, it’s a bad idea.
- If the implementation is easy to explain, it may be a good idea.
- Namespaces are one honking great idea — let’s do more of those!
Вплив інших мов на Python
З'явившись порівняно пізно, Python створювався під впливом багатьох мов програмування:
- ABC — відступи (поля) для групування операторів, високорівневі структури даних (map) (фактично, Python створювався як спроба виправити помилки, допущені при проєктуванні ABC);
- [en] — пакети, модулі, використання
else
спільно зtry
таexcept
, іменовані аргументи функцій (на це також вплинув Common Lisp); - С, — деякі синтаксичні конструкції (як пише сам Гвідо ван Россум — він використовував найбільш несуперечливі конструкції з С, щоб не викликати неприязнь у Сі-програмістів до Python);
- Smalltalk — об'єктно-орієнтоване програмування;
- Lisp — окремі риси функціонального програмування (
lambda, map, reduce, filter
та інші); - Fortran — зрізи масивів, комплексна арифметика;
- [en] — спискові вирази;
- Java — модулі logging, unittest, threading (частина можливостей оригінального модуля не реалізована), xml.sax стандартної бібліотеки, спільне використання finally та except при обробці винятків, використання @ для декораторів;
- [en] — генератори.
- TypeScript — ідея синтаксису підказок типів (type hinting). З версії Python 3.10 система підказок типів стала унікальною, «злившись» з мовою в одне ціле. До того ж у Python підказки типів ніяк не впливають на роботу інтерпретатора.
Більша частина інших можливостей Python (наприклад, байт-компіляція вихідного коду) також була реалізована раніше в інших мовах.
Портованість
Python портованна і працює майже на всіх відомих платформах — від КПК до мейнфреймів. Існують порти під Microsoft Windows, всі варіанти UNIX (включаючи FreeBSD та (GNU/Linux)), Plan 9, Mac OS та Mac OS X, iPhone OS 2.0 і вище, Palm OS, (OS/2), Amiga, AS/400 та навіть [en], Symbian та Android.
У міру старіння платформи її підтримка в основній гілці мови припиняється. Наприклад, з версії 2.6 припинена підтримка Windows 95, Windows 98 та Windows ME. Однак на цих платформах можна використовувати попередні версії Python — спільнота активно підтримує версії Python починаючи від 2.3 (для них виходять виправлення).
При цьому, на відміну від багатьох портованих систем, для всіх основних платформ Python має підтримку характерних для даної платформи технологій (наприклад, Microsoft COM/DCOM). Навіть більше, існує спеціальна версія Python для віртуальної машини Java — Jython, що дозволяє інтерпретатору виконуватися на будь-якій системі, яка підтримує Java, при цьому класи Java можуть безпосередньо використовуватися з Python й навіть бути написаними на ньому. Також кілька проєктів забезпечують інтеграцію з платформою Microsoft.NET, основні з яких — IronPython та .
Типи й структури даних
Python підтримує динамічну типізацію, тобто, тип змінної визначається лише під час виконання. З базових типів слід зазначити підтримку цілих чисел довільної довжини і комплексних чисел. Python має багату бібліотеку для роботи з рядками, зокрема, кодованими в юнікоді.
З колекцій Python підтримує кортежі (tuples), (масиви), словники (асоціативні масиви) і від версії 2.4, множини.
Система класів підтримує множинне успадкування і метапрограмування. Будь-який тип, включаючи базові, входить до системи класів, й за необхідності можливе успадкування навіть від базових типів.
Можливості
Інтерактивний режим
Подібно Ліспу та Прологу в режимі відлагодження, інтерпретатор Python має інтерактивний режим роботи, при якому введені з клавіатури вирази відразу ж виконуються, а результат виводиться на екран. Цей режим цікавий не тільки новачкам, але й досвідченим програмістам, які можуть протестувати в інтерактивному режимі будь-який фрагмент коду, перш ніж використовувати його в основній програмі, або просто використовувати як калькулятор з великим набором функцій.
Діалог роботи з Python в інтерактивному режимі має такий вигляд:
>>> 2 ** 100 # піднесення 2 до 100-го степеня 1267650600228229401496703205376L >>> from math import * # імпорт математичних функцій >>> sin (pi * 0.5) # обчислення синуса від половини пі 1.0 >>> help (sorted) # допомогу по функції sorted Help on built-in function sorted in module __builtin__: sorted (…) sorted (iterable, cmp=none, key=none, reverse=false) -> new sorted list
В інтерактивному режимі доступний дебагер pdb та система довідки (викликається за help()
). Система допомоги працює для модулів, класів і функцій, тільки якщо ті були забезпечені рядками документації.
Крім вбудованої, існує й покращена інтерактивна оболонка IPython.
Об'єктно-орієнтоване програмування
Дизайн мови Python побудований навколо об'єктно-орієнтованої моделі програмування. Реалізація ООП в Python є елегантною, потужною та добре продуманою, але разом з тим, достатньо специфічною в порівнянні з іншими об'єктно-орієнтованими мовами.
Можливості та особливості:
- Класи є одночасно об'єктами з усіма нижче наведеними можливостями.
- Успадкування, в тому числі множинне.
- Поліморфізм (всі функції віртуальні).
- Інкапсуляція (два рівні — загальнодоступні та приховані методи і поля). Особливість — приховані члени доступні для використання та помічені як приховані лише особливими іменами.
- Спеціальні методи, що керують життєвим циклом об'єкта: конструктори, деструктори, розподільники пам'яті.
- Перевантаження операторів (усіх, крім
is, '.', '='
і символьних логічних). - Властивості (імітація поля за допомогою функцій).
- Управління доступу до полів (емуляція полів і методів, частковий доступ тощо).
- Методи для управління найпоширенішими операціями (істиннісне значення,
len()
, глибоке копіювання, серіалізація, ітерація по об'єкту, …) - Метапрограмування (управління створенням класів, тригери на створення класів, та ін)
- Повна інтроспекція.
- Класові та статичні методи, класові поля.
- Класи, вкладені у функції та інші класи.
Функціональне програмування
Python підтримує парадигму функціонального програмування, зокрема:
- функція є об'єктом;
- функції вищих порядків;
- рекурсія;
- розвинена обробка списків (спискові вирази, операції над послідовностями, ітератори);
- аналог замикань (closures);
- часткове застосування функції;
- можливість реалізації інших засобів на самій мові (наприклад, каррінг).
Модулі та пакети
Програмне забезпечення (застосунок або бібліотека) на Python оформлюється у вигляді модулів, які у свою чергу можуть бути зібрані в пакунки. Модулі можуть розташовуватися як у каталогах, так і в ZIP-архівах. Модулі можуть бути двох типів за своїм походженням: модулі, написані на «чистому» Python, і модулі розширення (extension modules), написані на інших мовах програмування. Наприклад, у стандартній бібліотеці є «чистий» модуль pickle і його аналог на Сі: cPickle. Модуль оформляється у вигляді окремого файлу, а пакет — у вигляді окремого каталогу. Підключення модуля до програми здійснюється оператором import
. Після імпорту модуль представлений окремим об'єктом, що дає доступ до простору імен модуля. У ході виконання програми модуль можна перезавантажити функцією reload()
.
Інтроспекція
Python підтримує повну інтроспекцію часу виконання. Це означає, що для будь-якого об'єкта можна отримати всю інформацію про його внутрішню структуру.
Застосування інтроспекції (метапрограмування) є важливою частиною того, що називають «pythonic style», і широко застосовується в бібліотеках і фреймворках Python, таких як , [en], PLY, CherryPy, Django та інших, заощаджуючи час програміста, що ними користується.
Обробка винятків
Обробка винятків підтримується в Python допомогою операторів try, except, else, finally, raise
, що утворюють блок обробки винятків. У загальному випадку блок має такий вигляд:
try: # Тут код, в якому може виникнути виняткова ситуація raise ExceptionType ("message") except (Тип винятку1, Тип винятку2, …), Змінна: # Код в блоці виконується, якщо тип винятку збігається з одним з типів # (Тип винятку1, Тип винятку2, ...) або є спадкоємцем одного # з цих типів. # Отриманий виняток доступний в необов'язковій Змінній. except (Тип винятку3, Тип винятку4, …), Змінна: # Кількість блоків except не обмежено raise # Згенерувати виняток "поверх" отриманого; без параметрів — повторно згенерувати отримане except: # Буде виконано за будь-якого винятку, не обробленого типізованими блоками except else: # Код блоку виконується, якщо не було отримано винятків. finally: # Буде виконано в будь-якому випадку, можливо після відповідного # блоку except або else
Спільне використання else, except
і finally
стало можливо тільки починаючи з Python 2.5. Інформація про поточний виняток завжди доступна через sys.exc_info()
. Крім значення винятку, Python також зберігає стан стеку аж до точки збудження винятку — так званий traceback.
На відміну від мов програмування, що компілюються, в Python використання винятку не призводить до значних накладних витрат (а часто навіть дозволяє прискорити виконання програм) і дуже широко використовується. Винятки узгоджуються з філософією Python (10-й пункт «дзену Python» — «Помилки ніколи не повинні ігноруватися») та є одним із засобів підтримки «качиної типізації».
Іноді, замість явної обробки винятків, зручніше використовувати блок with
(доступний, починаючи з Python 2.5).
Ітератори
У програмах на Python широко використовуються ітератори. Цикл for
може працювати як з послідовністю, так і з ітераторами. Усі колекції, як правило, надають ітератор. Об'єкти визначеного користувачем класу теж можуть бути ітераторами. Модуль itertools
стандартної бібліотеки містить багато корисних функцій для роботи з ітераторами. На відміну від звичайних послідовностей, всі елементи яких зберігаються в пам'яті, отримання наступного елемента забезпечує генератор — спеціальна функція, звернення до якої обчислює і повертає наступний елемент генератора.
Генератори
Однією з цікавих можливостей мови є генератори — функції, що між викликами зберігають внутрішній стан: значення локальних змінних і поточну інструкцію (див. також: співпрограма). Генератори можуть використовуватися як ітератори для структур даних і для лінивих обчислень. Наприклад, генератор чисел Фібоначчі:
def fib(): a, b = 1, 1 while True: yield a a, b = b, a + b while x in fib(): print(x)
При виклику генератора функція негайно повертає об'єкт-ітератор, який зберігає поточну точку виконання та стан локальних змінних функції. При запиті наступного значення (за допомогою методу next()
, який неявно викликається в циклі for
) генератор продовжує виконання функції від попередньої точки зупину до наступного оператора yield
або return
.
У Python 2.4 з'явилися генераторні вирази — вирази, що дають у результаті генератор. Генераторні вирази дозволяють заощадити пам'ять там, де інакше потрібно було б використовувати список із проміжними результатами:
>>> sum(i for i in xrange (1, 100) if i % 2 != 0) 2500
У цьому прикладі підсумовуються всі непарні числа від 1 до 99.
Починаючи з версії 2.5, Python підтримує повноцінні співпроцедури: тепер в генератор можна передавати значення за допомогою методу send()
та збуджувати в його контексті виняток за допомогою методу throw()
.
Керування контекстом виконання
У Python 2.5 з'явилися засоби для керування контекстом виконання блоку коду — оператор with
та модуль contextlib
.
Оператор може застосовуватися в тих випадках, коли до та після деяких дій обов'язково мають виконуватися якісь інші дії, незалежно від створених у блоці винятків або операторів return
: файли має бути закрито, ресурси звільнено, перенаправлення стандартного введення/виведення завершено, тощо. Оператор полегшує читання коду, отже, допомагає уникати помилок.
Декоратори
Починаючи з версії 2.4, Python дозволяє використовувати, так звані, Декоратори (не слід плутати з однойменним шаблоном проєктування) для підтримки існуючої практики перетворення функцій та методів у місці визначення (декораторів може бути декілька). Після довгих дебатів для декораторів став використовуватися символ @
у рядках, що передують визначенню функції або методу. Наступний приклад містить опис статичного методу без застосування декоратора:
def my_wonderful_method (): return "Деякий метод" my_wonderful_method = staticmethod(my_wonderful_method)
і за допомогою декоратора:
@staticmethod def my_wonderful_method (): return "Деякий метод"
Декоратор — це функція, першим аргументом якої є декорована функція або метод. Декоратори можна вважати елементом аспектно-орієнтованого програмування.
З версії 2.6 декоратори можна використовувати з класами, аналогічно функціям.
Інші можливості
У Python є ще кілька можливостей, що відрізняють його від багатьох інших мов високою гнучкістю та динамічністю.
Наприклад, клас є об'єктом, а в операторі визначення класу можна використовувати вирази в списку батьківських класів.
def getClass(): return dict class D(getClass()): pass d = D()
Можна модифікувати багато об'єктів під час виконання, наприклад класи:
>>> class X(object): pass … >>> y = X() >>> y.wrongMethod() # такого методу поки немає Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'X' object has no attribute 'wrongMethod' >>> X.wrongMethod = lambda self : 'im here' # додамо його >>> y.wrongMethod() # так як доступ до методу призводить до пошуку по __dict__ класу, 'im here' # то wrongMethod стає доступним всім екземплярам
Бібліотеки
Стандартна бібліотека
Багата стандартна бібліотека є однією з привабливостей мови Python. Тут є засоби для роботи з багатьма мережевими протоколами та форматами Інтернету, наприклад, модулі для написання HTTP-серверів та клієнтів, для розбору та створення поштових повідомлень, для роботи з XML, тощо. Набір модулів для роботи з операційною системою дозволяє писати крос-платформні застосунки. Існують модулі для роботи з регулярними виразами, текстовими кодуваннями, мультимедійними форматами, криптографічними протоколами, архівами, серіалізацією даних, юніт-тестуванням та ін.
Модулі розширення та програмні інтерфейси
Крім стандартної бібліотеки існує багато інших, що надають інтерфейс до всіх системних викликів на різних платформах; зокрема, на платформі Win32 підтримуються всі виклики Win32 API, а також COM в обсязі не меншому, ніж у Visual Basic або Delphi. Існує велика кількість прикладних бібліотек для Python у різноманітних галузях: веброзробка, бази даних, обробка зображень, обробка тексту, чисельні методи, програми операційної системи тощо.
Для Python прийнята специфікація програмного інтерфейсу до баз даних та розроблено відповідні цій специфікації пакети для доступу до різних СУБД: PostgreSQL, Oracle, Sybase, Firebird (Interbase), Informix, Microsoft SQL Server, MySQL та sqlite. На платформі Microsoft Windows доступ до БД можливий через ADO (ADOdb). Комерційний пакет mxODBC для доступу до СУБД через ODBC для платформ Windows і UNIX розроблений eGenix. Для Python написано багато ORM: (SQLObject, SQLAlchemy, Dejavu, Django), виконані програмні каркаси для розробки вебзастосунків (Django, Pylons).
Бібліотека NumPy для роботи з багатовимірними масивами дозволяє досягти продуктивності наукових розрахунків, порівнянної зі спеціалізованими пакетами. SciPy використовує NumPy і надає доступ до великого спектра математичних алгоритмів (матрична алгебра — BLAS, level 1-3 і LAPACK; ШПФ).
Бібліотека WSGI — інтерфейс шлюзу з вебсервером (Python Web Server Gateway Interface).
Python надає простий і зручний програмний інтерфейс для написання власних модулів на мовах С та . Інструмент SWIG дозволяє майже автоматично отримувати прив'язки для використання C/C++ бібліотек у коді на Python. Можливості цього та інших інструментів варіюються від автоматичної генерації (C/C++/Fortran)-Python інтерфейсів за спеціальними файлами (SWIG, pyste, SIP, pyfort) до надання зручніших API (boost::python, CXX та ін.) Інструмент стандартної бібліотеки дозволяє програмам Python безпосередньо викликати функції з динамічних бібліотек/DLL, написаних на C. Існують модулі, що дозволяють вбудовувати код на С/C++ прямо у вихідні файли Python, створюючи розширення «на льоту» (pyinline, weave). Для підключення математичних функцій, особливо із застосуванням NumPy, наразі офіційно рекомендованим є Cython.
Інший підхід полягає у вбудовуванні інтерпретатора Python у застосунки. Python легко вбудовується в програми на Java, C/, Ocaml. Взаємодія Python-застосунків з іншими системами можлива також за допомогою CORBA, XML-RPC, SOAP, COM.
За допомогою Pyrex можлива компіляція Python-подібної мови (додано можливість типізації) в еквівалентний Сі-код і зв'язування із зовнішніми модулями.
Експериментальний проєкт shed skin передбачає створення компілятора для трансформації неявно типізованих Python програм в оптимізований С++ код. Починаючи з версії 0.22 shed skin дозволяє компілювати окремі функції в модулі розширень. Повна компіляція (станом на 1 липня 2007) далека від завершення.
Python та переважна більшість бібліотек до нього безкоштовні й поставляються у вихідних кодах. Навіть більше, на відміну від багатьох відкритих систем, ліцензія ніяк не обмежує використання Python у комерційних розробках та не накладає ніяких зобов'язань, крім зазначення авторських прав.
Графічні бібліотеки
З Python поставляється бібліотека tkinter на основі Tcl/Tk для створення крос-платформних програм з графічним інтерфейсом.
Для науково-технічної мети найбільшого поширення набуло використання matplotlib — бібліотеки з інтерфейсом, аналогічним MATLAB Plot Tool.
Існують розширення, що дозволяють використовувати всі основні GUI бібліотеки — wxPython, засноване на бібліотеці wxWidgets, PyGTK для , PyQt та PySide для Qt та інші. Деякі з них також надають широкі можливості для роботи з базами даних, графікою та мережами, використовуючи всі можливості бібліотеки, на якій базуються.
Для створення ігор та програм, що вимагають нестандартного інтерфейсу, можна використовувати бібліотеку Pygame. Вона також надає великі засоби роботи з мультимедіа: з її допомогою можна керувати звуком і зображеннями, відтворювати відео. Надаване pygame апаратне прискорення графіки OpenGL має більш високорівневий інтерфейс в порівнянні з PyOpenGL, що копіює семантику С-бібліотеки для OpenGL. Є також PyOgr, що забезпечує прив'язку до OGRE — високорівневої об'єктно-орієнтованої бібліотеки 3D-графіки. Крім того, існує бібліотека pythonOCC, що забезпечує прив'язку до середовища 3D-моделювання та симуляції OpenCascade..
Для роботи з растровою графікою використовується бібліотека Python Imaging Library.
Порівняння з іншими мовами
Найчастіше Python порівнюють з Perl та Ruby. Ці мови також є інтерпретованими та мають приблизно однакову швидкість виконання програм. Як і Perl, Python може успішно застосовуватися для написання скриптів (сценаріїв). Як і Ruby, Python є добре продуманою системою для ООП.
Засоби функціонального програмування частково запозичені з Scheme та [en].
У середовищі комерційних застосунків швидкість виконання програм на Python можуть порівнювати з Java-застосунками.
Попри те, що Python має досить самобутній синтаксис, одним із принципів дизайну цієї мови є принцип найменшого подиву.
Недоліки
Див також списки недоліків мови Python.
Низька швидкодія
Python, як і багато інших інтерпретованих мов, які не застосовують, наприклад, JIT-компілятори, мають загальний недолік — порівняно низьку швидкість виконання програм. Однак, у випадку з Python цей недолік компенсується зменшенням часу розробки програми У середньому, програма, написана на Python, в 2-4 рази компактніша, ніж її аналог на або Java. Збереження байт-коду (файли .pyc і .pyo) дозволяє інтерпретатору не витрачати зайвий час на перекомпіляцію коду модулів при кожному запуску, на відміну, наприклад, від мови Perl. Крім того, існує спеціальна JIT-бібліотека psyco (проте призводить до збільшення споживання оперативної пам'яті). Ефективність psyco значною мірою залежить від архітектури програми.
Існують проєкти реалізацій мови Python, що вводять високопродуктивні віртуальні машини (ВМ) як компілятора заднього плану. Прикладами таких реалізацій може служити PyPy, що базується на LLVM; більш ранньою ініціативою є проєкт Parrot. Очікується, що використання ВМ типу LLVM призведе до тих самих результатів, що й використання аналогічних підходів для реалізацій мови Java, де низька обчислювальна продуктивність в основному подолана.
Низка програм/бібліотек для інтеграції з іншими мовами програмування (див. вище) надають можливість використовувати іншу мову для написання критичних ділянок.
У найпопулярнішій реалізації мови Python інтерпретатор досить великий і більш вимогливий до ресурсів, ніж в аналогічних популярних реалізаціях Tcl, Forth, LISP або Lua, що обмежує його застосування у вбудованих системах. Тим не менше, Python знайшов застосування в КПК і деяких моделях мобільних телефонів.
Відсутність статичної типізації
Частина інформації в цій статті застаріла. |
Відсутність статичної типізації є не стільки вадою інтерпретатора, скільки вибором розробника мови. Річ у тому, що в Python прийнята так звана «качина типізація». Через це типи переданих значень недоступні на етапі компіляції, та помилки на зразок AttributeError
можуть виникати під час виконання. Відсутність статичної типізації також є однією з основних причин низької швидкодії.
Існують модулі, які дозволяють контролювати типи параметрів функцій на етапі виконання, наприклад typecheck або method signature checking decorators. Додавання необов'язковою статичної типізації параметрів функції заплановано для Python3000. При цьому, однак, безпосередньо інтерпретатор не буде перевіряти типи, а тільки додавати відповідну інформацію до метаданих функції для її (інформації) подальшого використання модулями розширень.
Відсутність статичної типізації і деякі інші причини не дозволяють реалізувати в Python механізм перевантаження функцій на етапі компіляції. Можливості Python дозволяють реалізувати динамічне перевантаження на етапі виконання, що, звичайно, уповільнює виклик, бо вирішення яку саме функцію викликати проводиться при кожному зверненні і є, в загальному випадку, досить складною процедурою. Відсутність перевантаження в Python компенсують використанням функцій з динамічними параметрами.
Плани з підтримки перевантаження в Python3000 Перевантаження функцій реалізована різними сторонніми бібліотеками, в тому числі PEAK надає надзвичайно багатий можливостями механізм перевантаження функцій з використанням довільних правил.
Неможливість модифікації вбудованих класів
У порівнянні з Ruby та деякими іншими мовами, в Python відсутня можливість модифікувати вбудовані класи, такі, як int, str, float, list
та інші, що, однак, дозволяє Python споживати менше оперативної пам'яті і швидше працювати. Ще однією причиною введення такого обмеження є необхідність узгодження з модулями розширення. Багато модулів (з метою оптимізації швидкодії) перетворять Python-об'єкти елементарних типів до відповідних Сі-типів замість маніпуляцій з ними за допомогою Сі-API.
Глобальне блокування інтерпретатора (GIL)
GIL (Global Interpreter Lock) — проблема, притаманна CPython, Stackless та PyPy, але відсутня в Jython та IronPython. При своїй роботі основний інтерпретатор Python постійно використовує велику кількість потіконебезпечних даних. В основному це словники, в яких зберігаються атрибути об'єктів. Для уникнення руйнування цих даних при спільній модифікації з різних потоків перед початком виконання декількох інструкцій (за замовчуванням 100) потік інтерпретатора захоплює GIL, а після закінчення звільняє. Внаслідок цієї особливості в кожен момент часу може виконуватися тільки одна нить Python коду, навіть якщо на комп'ютері є кілька процесорів або процесорних ядер (GIL також звільняється на час виконання блокуючих операцій, таких як введення-виведення, зміни/перевірка стану синхронізуючих примітивів та інших — таким чином, якщо одна нить блокується, інші можуть виконуватися). Була зроблена спроба переходу до більш гранульованої синхронізації, проте через часті захоплення/звільнення блокувань ця реалізація виявилася занадто повільною. У найближчому майбутньому перехід від GIL до інших технік не передбачається, однак є python-safethread — CPython без GIL і з деякими іншими змінами (за твердженнями його авторів, на однонитевих застосунках швидкість відповідає 60-65 % від швидкості оригінальному CPython).
Ця проблема має два основних варіанти вирішення. Перший — відмова від спільного використання змінюваних даних. При цьому дані дублюються в нитях і необхідність забезпечення їхньої синхронізації (якщо така потрібна) лягає на програміста Цей підхід веде до збільшення споживання оперативної пам'яті (однак не настільки сильно, як при використанні процесів).
Другий підхід — забезпечення більш гранульованої синхронізації — для окремих структур даних. У цьому випадку падає продуктивність внаслідок збільшення числа звільнень/захоплень блокувань.
Якщо необхідно паралельне виконання декількох нитей Python-коду, то можна скористатися процесами, наприклад, модулем processing, який імітує семантику стандартного модуля threading, але використовує процеси замість нитей. Є безліч модулів, що спрощують написання паралельних та/або розподілених застосунків на Python, таких як parallelpython, Pypar, pympi та інші. GIL звільняється при виконанні коду більшості розширень, наприклад, NumPy/SciPy, дозволяючи на час розрахунків виконуватися іншому Python-ниті. Іншим рішенням може бути використання IronPython або Jython, позбавлених даного недоліку.
Реалізації
Python портований на всі відомі платформи — від КПК до мейнфреймів. Існують порти під Windows, всі варіанти UNIX (включно з Linux), Plan 9, Mac OS і Mac OS X, Palm OS, (OS/2), Amiga, AS/400 і навіть OS/390 і Symbian.
При цьому, на відміну від багатьох портованих систем, на кожній платформі Python підтримує характерні для даної платформи технології (наприклад, Microsoft COM). Крім того, існує спеціальна версія Python для віртуальної машини Java — Jython, що дозволяє інтерпретатору виконуватися на будь-якій системі, що підтримує Java, класи Java можуть безпосередньо використовуватися з Python і навіть бути написаними на Python. Нещодавно почалася розробка системи, спрямованої на повнішу інтеграцію з платформою .NET — Iron Python.
Подальша розробка
(«PEP») — це документ зі стандартизованим дизайном, що надає загальну інформацію про мову Python, включаючи нові пропозиції, описи та роз'яснення можливостей мови. PEP пропонуються як основне джерело для пропозиції нових можливостей і для роз'яснення вибору того або іншого дизайну для основних елементів мови. Видатні PEP рецензуються і коментуються .
Графік і сумісність
Серії Python 2.x і Python 3.x протягом кількох випусків існували паралельно, при цьому серія 2.x використовувалася для забезпечення сумісності. PEP 3000 містить більше інформації про випуски.
Python 3.0 зворотно не сумісний з попередньою серією 2.x. Код Python 2.x швидше за все буде видавати помилки при виконанні в Python 3.0. Динамічна типізація Python, разом зі змінами декількох методів словників, робить механічний переклад з Python 2.x в Python 3.0 дуже складним. Однак, утиліта «2to3» здатна зробити більшість роботи з перекладу коду, вказуючи на підозрілі їй частини за допомогою коментарів і попереджень. PEP 3000 рекомендує тримати вихідний код для серії 2.x, і робити випуски для Python 3.x за допомогою «2to3». Отриманий код не слід редагувати, поки програма повинна бути працездатною в Python 2.x.
Розробники припинили підтримувати гілку Python 2.x у січні 2020 року. Остання випущена версія гілки Python 2.x: Python 2.7. Далі розробка ведеться лише у гілці Python 3.x.
Можливості
Основні зміни, внесені до версії 3.0:
- Синтаксична можливість для анотації параметрів і результату функцій (наприклад, для передачі інформації про тип або документування).
- Повний перехід на unicode для рядків.
- Введення нового типу «незмінні байти» і типу «змінюваний буфер». Обидва необхідні для подання двійкових даних.
- Нова підсистема вводу-виводу (модуль
io
), що має окремі вигляди для бінарних і текстових даних. - Абстрактні класи, абстрактні методи (є вже в 2.6).
- Ієрархія типів для чисел.
- Вирази для словників і множин
{k: v for k, v in a_dict}
і{el1, el2, el3}
(за аналогією зі списковими виразами). - Зміни
print
з вбудованого виразу у вбудовану функцію. Це дозволить модулям робити зміни, підлаштовуючись під різне використання функції, а також спростить код. У Python 2.6 ця можливість активується введеннямfrom __future__ import print_function
. - Функція
reduce
була переміщена з вбудованого простору в модульfunctools
. Протеmap
абоfilter
залишилися в вбудованому просторі. - Видалення деяких застарілих можливостей, які підтримуються у гілці 2.x для сумісності, зокрема: класи старого стилю, цілочисельний поділ з обрізанням результату як поведінка за вмовчанням, рядкові винятки, неявний відносний імпорт, оператор
exec
тощо - Реорганізація стандартної бібліотеки.
- Новий синтаксис для метакласів.
- Змінений синтаксис присвоєння. Стало можливим, наприклад, надання
(a, * rest, b) = range(5)
. З іншого боку, формальні параметри функцій на зразокdef foo (a, (b, c))
більше неприпустимі.
Поєднання з табличними процесорами
Влітку 2023 року, згідно повідомлення Microsoft, для користувачів бета-версії Microsoft 365, Python було додано до Microsoft Excel. Нове поєднання має на меті покращити можливості аналізу та візуалізації даних в Excel, дозволяючи користувачам отримувати доступ до Python безпосередньо зі стрічки Excel. Компанія Microsoft пояснила, що користувачам тепер не потрібно більше встановлювати будь-яке додаткове програмне забезпечення або налаштовувати надбудову для доступу до функціональних можливостей, оскільки інтеграція Python до Excel буде частиною вбудованих з’єднувачів Excel та інструменту ETL Power Query.
Основні пропозиції
Перелік всіх пропозицій наведено на офіційному сайті разом із їх статусом. Нижче наведено ті, які здобули найбільше поширення:
- PEP8 Настанова щодо стилю оформлення коду.
Спеціалізовані підмножини/розширення Python
На основі Python було створено кілька спеціалізованих підмножин мови, в основному призначених для статичної компіляції в машинний код. Деякі з них:
- RPython — створена в рамках проєкту PyPy значно обмежена реалізація Python без динамізму часу виконання та деяких інших можливостей. RPython код можна компілювати в багато інших мов/платформ — C, JavaScript, Lisp, .NET, LLVM. На RPython написано інтерпретатор PyPy.
- Pyrex — обмежена реалізація Python, але трохи менше, ніж RPython. PyReX розширено можливостями статичної типізації типами з мови С і дозволяє вільно змішувати типізований та не типізований код. Призначений для написання модулів розширень, компілюється в код на мові С.
- Cython — розширена версія Pyrex.
- pyastra — компілятор Python коду в асемблер для PIC архітектури.
- Shed Skin — призначений для компіляції неявно статично типізованого Python коду в оптимізований код на мові , проєкт далекий від завершення.
- PyScript — це фронтенд-фреймворк для створення програм на Python, вбудованих у HTML-код, для виконання в браузері. Дозволяє імпортувати більшість модулів Python.
Застосування
Python — стабільна та поширена мова. Вона використовується в багатьох проєктах та в різних якостях: як основна мова програмування або для створення розширень та інтеграції додатків. На Python реалізована велика кількість проєктів, також вона активно використовується для створення прототипів майбутніх програм.
Python використовується в багатьох великих компаніях.
Документація та підручники
Опис стандартних об'єктів та модулів, дивіться . містить формальніше визначення мови.
Щоб писати розширення на C та C++, читайте та .
- Марк Пілігрим. Пориньте у Python 3.
Інтегровані середовища розробки
Для Python існує кілька спеціалізованих середовищ розробки, зокрема, IDLE, Thonny, PyCharm, PyScripter, Spyder (останній призначено для наукових розробок), а також розширення для Visual Studio Code і плагін PyDev для Eclipse.
Див. також
- Anaconda
- Інтерпретатор
- Інші популярні інтерпретовані мови програмування
Джерела
- History and License - Python documentation
- Thomas Wouters (2 жовтня 2023). . Python Insider. Архів оригіналу за 10 жовтня 2023. Процитовано 25 жовтня 2023.
- Donovan, Ryan (23 квітня 2020). . Stackoverflow Blog. Stack Overflow. Архів оригіналу за 16 жовтня 2020. Процитовано 09 жовтня 2020.
- . Thomas Wouters. Архів оригіналу за 22 жовтня 2023. Процитовано 25 жовтня 2023.
- . Архів оригіналу за 16 грудня 2019. Процитовано 1 січня 2020.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - The python Open Source Project on Open Hub: Languages Page — 2006.
- The Python Programming Language Source Code — 2007.
- . Архів оригіналу за 6 січня 2018. Процитовано 28 серпня 2008.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - Guido van Rossum, Python Reference Manual, release 2.4.4, 18 October 2006
- . Архів оригіналу за 1 вересня 2016. Процитовано 4 липня 2010.
- . Архів оригіналу за 17 лютого 2016. Процитовано 4 липня 2010.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - . Архів оригіналу за 28 січня 2007. Процитовано 4 липня 2010.
- . Архів оригіналу за 2 червня 2009. Процитовано 4 липня 2010.
- IEEE Spectrum опублікувала рейтинг найпопулярніших мов програмування 2023 року. // Автор: Артем Житкевич. 30.08.2023
- . Архів оригіналу за 17 липня 2005. Процитовано 22 серпня 2014.
- Жартівливий натяк на національність Гвідо
- . Архів оригіналу за 6 січня 2018. Процитовано 28 серпня 2008.
- . Архів оригіналу за 6 червня 2017. Процитовано 4 липня 2010.
- Python on Android (англійською) . www.damonkohler.com. Архів оригіналу за 28 січня 2011. Процитовано 19 грудня 2009.
- Port-Specific Changes: Windows. Python v2.6.1 documentation. What's New in Python 2.6 (англійською) . Python Software Foundation. Архів оригіналу за 28 січня 2011. Процитовано 11 грудня 2008.
- . Архів оригіналу за 4 серпня 2018. Процитовано 20 червня 2019.
- . Архів оригіналу за 6 листопада 2013. Процитовано 5 липня 2010.
- — Professional Python Software, Skills and Services[недоступне посилання з серпня 2019]
- . Архів оригіналу за 9 червня 2021. Процитовано 5 липня 2010.
- . Архів оригіналу за 30 серпня 2008. Процитовано 5 липня 2010.
- . Архів оригіналу за 19 квітня 2008. Процитовано 5 липня 2010.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - . Архів оригіналу за 8 лютого 2007. Процитовано 5 липня 2010.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - . Архів оригіналу за 3 лютого 2007. Процитовано 5 липня 2010.
- . Архів оригіналу за 3 лютого 2007. Процитовано 5 липня 2010.
- . Архів оригіналу за 15 січня 2007. Процитовано 5 липня 2010.
- . Архів оригіналу за 6 липня 2010. Процитовано 5 липня 2010.
- . Архів оригіналу за 11 серпня 2007. Процитовано 5 липня 2010.
- . Архів оригіналу за 26 вересня 2018. Процитовано 5 липня 2010.
- . Архів оригіналу за 11 червня 2010. Процитовано 5 липня 2010.
- . Архів оригіналу за 11 серпня 2011. Процитовано 5 липня 2010.
- . Архів оригіналу за 9 червня 2021. Процитовано 5 липня 2010.
- . Архів оригіналу за 15 червня 2011. Процитовано 5 липня 2010.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - . Архів оригіналу за 29 січня 2009. Процитовано 5 липня 2010.
- . Архів оригіналу за 8 серпня 2011. Процитовано 5 липня 2010.
- . Архів оригіналу за 18 березня 2009. Процитовано 5 липня 2010.
- . Архів оригіналу за 31 серпня 2012. Процитовано 6 липня 2010.
- . Архів оригіналу за 10 серпня 2013. Процитовано 6 липня 2010.
- Python/C++ GNU g++. Computer Language Benchmarks Game. ???. Архів оригіналу за 28 січня 2011. Процитовано 1 липня 2009.
- Psyco (англ.) — JIT-компілятор для Python, що дозволяє збільшити швидкість роботи програм в 3-10 разів
- unladen-swallow. A faster implementation of Python. code.google. Архів оригіналу за 28 січня 2011. Процитовано 22 червня 2009.
Goals: ... Produce a version of Python at least 5x faster than CPython
- . Архів оригіналу за 6 серпня 2009. Процитовано 6 липня 2010.
- . Архів оригіналу за 17 серпня 2010. Процитовано 6 липня 2010.
- . Архів оригіналу за 13 лютого 2008. Процитовано 6 липня 2010.
- . Архів оригіналу за 8 травня 2007. Процитовано 6 липня 2010.
- . Архів оригіналу за 19 червня 2010. Процитовано 6 липня 2010.
- . Архів оригіналу за 3 липня 2007. Процитовано 6 липня 2010.
- . Архів оригіналу за 12 травня 2008. Процитовано 6 липня 2010.
- . Архів оригіналу за 23 липня 2008. Процитовано 6 липня 2010.
- . Архів оригіналу за 9 листопада 2020. Процитовано 6 липня 2010.
- — Project Hosting on Google Code
- . Архів оригіналу за 22 травня 2008. Процитовано 6 липня 2010.
- . Архів оригіналу за 13 жовтня 2007. Процитовано 6 липня 2010.
- . Архів оригіналу за 28 травня 2010. Процитовано 6 липня 2010.
- . Архів оригіналу за 6 січня 2010. Процитовано 6 липня 2010.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - . Архів оригіналу за 18 жовтня 2007. Процитовано 6 липня 2010.
- Python for Windows [1] [ 11 вересня 2014 у Wayback Machine.]
- Python for UNIX [2] [ 26 серпня 2014 у Wayback Machine.]
- Python for Plan 9[3] [ 26 серпня 2014 у Wayback Machine.]
- Python for Mac OS X[4] [ 26 серпня 2014 у Wayback Machine.]
- Python for Palm OS[5] [ 22 червня 2013 у Wayback Machine.]
- Python for Other Platforms | SourceForge.net[6] [ 27 листопада 2020 у Wayback Machine.]
- (англ.). endoflife.date. Архів оригіналу за 18 вересня 2021. Процитовано 18 вересня 2021.
- . Архів оригіналу за 4 жовтня 2008. Процитовано 5 липня 2010.
- . Архів оригіналу за 21 липня 2009. Процитовано 5 липня 2010.
- Microsoft додала Python до Excel. // Автор: Артем Житкевич. 22.08.2023
- . python.org. Архів оригіналу за 1 липня 2018. Процитовано 30 червня 2018. (англ.)
- . python.org. Архів оригіналу за 29 червня 2018. Процитовано 30 червня 2018. (англ.)
- . Архів оригіналу за 7 липня 2007. Процитовано 5 липня 2010.
- . Архів оригіналу за 12 жовтня 2011. Процитовано 5 липня 2010.
- . Архів оригіналу за 9 листопада 2020. Процитовано 12 травня 2022.
- Serdar Yegulalp (JUN 15, 2022). Intro to PyScript: Run Python in your web browser. InfoWorld. Подія сталася на 3:00 AM PDT. Процитовано 26 липня 2022.
- . Архів оригіналу за 18 червня 2010. Процитовано 5 липня 2010.
- 9 Best Python IDEs and Code Editors. Процитовано 27 липня 2022.
Посилання
- Головний сайт спільноти розробників Python. [ 25 вересня 2021 у Wayback Machine.]
- Python documentation [ 6 липня 2015 у Wayback Machine.] — документація мови програмування.
- Python 2: Курс Молодого Бійця [ 19 серпня 2014 у Wayback Machine.] (укр.)
- «Програмування на мові Python (3.x). Початковий курс» [ 23 вересня 2013 у Wayback Machine.] (укр.)
- Вчимо Python онлайн - (укр.)
- Підручник з Python українською [ 21 жовтня 2016 у Wayback Machine.]
- embed python compiler in html [ 2 Лютий 2023 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Python najchastishe vzhivane prochitannya Pa jton zapozicheno nazvu z britanskogo shou Monti Pajton interpretovana ob yektno oriyentovana mova programuvannya visokogo rivnya iz suvoroyu dinamichnoyu tipizaciyeyu Rozroblena v 1990 roci Gvido van Rossumom Strukturi danih visokogo rivnya razom iz dinamichnoyu semantikoyu ta dinamichnim zv yazuvannyam roblyat yiyi privablivoyu dlya shvidkoyi rozrobki program a takozh yak zasib poyednuvannya nayavnih komponentiv Python pidtrimuye moduli ta paketi moduliv sho spriyaye modulnosti ta povtornomu vikoristannyu kodu Interpretator Python ta standartni biblioteki dostupni yak u skompilovanij tak i u vihidnij formi na vsih osnovnih platformah V movi programuvannya Python pidtrimuyetsya kilka paradigm programuvannya zokrema ob yektno oriyentovana procedurna aspektno oriyentovana ta funkcionalna PythonParadigma kilka paradigm imperativna funkcionalna ob yektno oriyentovanaData poyavi 20 lyutogo 1991 1 Tvorci Gvido van Rossum 1 Rozrobnik Gvido van RossumOstannij reliz 3 12 0 2 zhovtnya 2023 8 misyaciv tomu 2023 10 02 2 7 18 20 kvitnya 2020 4 roki tomu 2020 04 20 Testova versiya 3 13 0 alpha 1 13 zhovtnya 2023 7 misyaciv tomu 2023 10 13 Sistema tipizaciyi kachina tipizaciya dinamichna tipizaciya d i dDialekti Python 3 12 Python 2 7 pidtrimka zakinchena 1 sichnya 2020 roku Pid vplivom vid ABC C Haskell en Lisp en Perl Smalltalk TclVplinula na Boo Groovy DMova realizaciyi Python 6 i C 7 Operacijna sistema BagatoplatformovaLicenziya Python Software Foundation LicenseZvichajni rozshirennya fajliv py pyw pyc pyo pydVebsajt www python org Instrukciyi u Vikipidruchniku Mediafajli u VikishovishiPerevagiSered osnovnih yiyi perevag mozhna nazvati taki chistij sintaksis dlya vidilennya blokiv slid vikoristovuvati vidstupi perenosnist program sho vlastive bilshosti interpretovanih mov standartnij distributiv maye veliku kilkist korisnih moduliv vklyuchno z modulem dlya rozrobki grafichnogo interfejsu mozhlivist vikoristannya Python v dialogovomu rezhimi duzhe korisne dlya eksperimentuvannya ta rozv yazannya prostih zadach standartnij distributiv maye proste ale razom iz tim dosit potuzhne seredovishe rozrobki yake nazivayetsya IDLE i yake napisane movoyu Python zruchnij dlya rozv yazannya matematichnih problem maye zasobi roboti z kompleksnimi chislami mozhe operuvati z cilimi chislami dovilnoyi velichini u dialogovomu rezhimi mozhe vikoristovuvatisya yak potuzhnij kalkulyator vidkritij kod mozhlivist redaguvati jogo inshimi koristuvachami Python maye efektivni strukturi danih visokogo rivnya ta prostij ale efektivnij pidhid do ob yektno oriyentovanogo programuvannya Elegantnij sintaksis Python dinamichna obrobka tipiv a takozh te sho ce interpretovana mova roblyat yiyi idealnoyu dlya napisannya skriptiv ta shvidkoyi rozrobki prikladnih program u bagatoh galuzyah na bilshosti platform Interpretator movi Python i bagata Standartna biblioteka yak vihidni teksti tak i binarni distributivi dlya vsih osnovnih operacijnih sistem mozhut buti otrimani z sajtu Python www python org 17 kvitnya 2018 u Wayback Machine i mozhut vilno rozpovsyudzhuvatisya Cej samij sajt maye distributivi ta posilannya na chislenni moduli programi utiliti ta dodatkovu dokumentaciyu Interpretator movi Python mozhe buti rozshirenij funkciyami ta tipami danih rozroblenimi na C chi C abo na inshij movi yaku mozhna viklikati iz C Python takozh zruchna yak mova rozshirennya dlya prikladnih program sho potrebuyut podalshogo nalagodzhennya IstoriyaGvido van Rossum avtor Python Rozrobka movi Python bula rozpochata v kinci 1980 h rokiv spivrobitnikom gollandskogo institutu CWI Gvido van Rossumom Dlya rozpodilenoyi OS Amoeba potribna bula rozshiryuvana skriptova mova i Gvido pochav pisati Python na dozvilli zapozichivshi deyaki napracyuvannya dlya movi ABC Gvido brav uchast u rozrobci ciyeyi movi oriyentovanoyi na navchannya programuvannya U lyutomu 1991 roku Gvido opublikuvav vihidnij tekst v grupi novin alt sources Mova pochala vilno poshiryuvatisya cherez Internet i spodobalasya inshim programistam Z 1991 roku Python ye cilkom ob yektno oriyentovanim Python takozh zapozichiv bagato ris takih mov yak C C en i en j okremi risi funkcionalnogo programuvannya z Lispu py Nazva movi vinikla zovsim ne vid vidu plazuniv Avtor nazvav movu na chest populyarnogo britanskogo komedijnogo serialu 70 h rokiv Povitryanij cirk Monti Pajtona Vtim vse odno nazvu movi chastishe asociyuyut same zi zmiyeyu nizh z filmom piktogrami fajliv v KDE abo v Windows i navit emblema na sajti python org zobrazhuyut zmiyinu golovu Nayavnist druzhnoyi spilnoti koristuvachiv poryad z dizajnerskoyu intuyiciyeyu Gvido vvazhayetsya odnim z golovnih faktoriv uspihu Python Rozvitok movi vidbuvayetsya zgidno z chitko reglamentovanimi procesami stvorennya obgovorennya vidboru ta realizaciyi dokumentiv PEP Python Enhancement Proposal propozicij shodo rozvitku Python 3 grudnya 2008 roku pislya trivalogo testuvannya vijshla persha versiya Python 3000 abo Python 3 0 takozh vikoristovuyetsya skorochena Py3k U Python 3000 usuneno bagato nedolikiv arhitekturi z maksimalno mozhlivim ale ne povnim zberezhennyam sumisnosti zi starishimi versiyami Na sogodni pidtrimuyutsya Python versiyi 3 U 2023 roci najpopulyarnishoyu movoyu programuvannya sered IT specialistiv zgidno rejtingu IEEE Spectrum stala Python Rejting 2023 roku ohoplyuvav 59 mov programuvannya FilosofiyaRozrobniki movi Python ye prihilnikami pevnoyi filosofiyi programuvannya yaku nazivayut The Zen of Python Dzen Pajtona Yiyi tekst mozhna otrimati v interpretatori Python za dopomogoyu komandi import this lishe odin raz za sesiyu Avtorom ciyeyi filosofiyi vvazhayetsya en Tekst filosofiyi Garne krashe za potvorne Yavne krashe za neyavne Proste krashe za skladne Skladne krashe za zaplutane Ploske krashe za vkladene Rozridzhene krashe za shilne Legkist chitannya maye znachennya Osoblivi vipadki ne ye nastilki osoblivimi shob porushuvati pravila Hocha praktichnist ye vazhlivishoyu za bezdogannist Pomilki nikoli ne povinni prohoditi nepomitno Yaksho yih prihovuvannya ne propisano yavno Zustrivshi neodnoznachnist opirajtes spokusi vgadati Maye buti odin i bazhano tilki odin ochevidnij sposib zrobiti ce Hocha spochatku vin mozhe buti j ne ochevidnim yaksho vi ne gollandec Zaraz krashe nizh nikoli Hocha nikoli najchastishe krashe nizh prosto zaraz Yaksho realizaciyu vazhko poyasniti zadum poganij Yaksho realizaciyu legko poyasniti mozhlivo zadum dobrij Prostori imen chudova rich tozh robimo yih bilshe Originalnij tekst angl Beautiful is better than ugly Explicit is better than implicit Simple is better than complex Complex is better than complicated Flat is better than nested Sparse is better than dense Readability counts Special cases aren t special enough to break the rules Although practicality beats purity Errors should never pass silently Unless explicitly silenced In the face of ambiguity refuse the temptation to guess There should be one and preferably only one obvious way to do it Although that way may not be obvious at first unless you re Dutch Now is better than never Although never is often better than right now If the implementation is hard to explain it s a bad idea If the implementation is easy to explain it may be a good idea Namespaces are one honking great idea let s do more of those Vpliv inshih mov na PythonZ yavivshis porivnyano pizno Python stvoryuvavsya pid vplivom bagatoh mov programuvannya ABC vidstupi polya dlya grupuvannya operatoriv visokorivnevi strukturi danih map faktichno Python stvoryuvavsya yak sproba vipraviti pomilki dopusheni pri proyektuvanni ABC en paketi moduli vikoristannya else spilno z try ta except imenovani argumenti funkcij na ce takozh vplinuv Common Lisp S C deyaki sintaksichni konstrukciyi yak pishe sam Gvido van Rossum vin vikoristovuvav najbilsh nesuperechlivi konstrukciyi z S shob ne viklikati nepriyazn u Si programistiv do Python Smalltalk ob yektno oriyentovane programuvannya Lisp okremi risi funkcionalnogo programuvannya lambda map reduce filter ta inshi Fortran zrizi masiviv kompleksna arifmetika en spiskovi virazi Java moduli logging unittest threading chastina mozhlivostej originalnogo modulya ne realizovana xml sax standartnoyi biblioteki spilne vikoristannya finally ta except pri obrobci vinyatkiv vikoristannya dlya dekoratoriv en generatori TypeScript ideya sintaksisu pidkazok tipiv type hinting Z versiyi Python 3 10 sistema pidkazok tipiv stala unikalnoyu zlivshis z movoyu v odne cile Do togo zh u Python pidkazki tipiv niyak ne vplivayut na robotu interpretatora Bilsha chastina inshih mozhlivostej Python napriklad bajt kompilyaciya vihidnogo kodu takozh bula realizovana ranishe v inshih movah PortovanistPython portovanna i pracyuye majzhe na vsih vidomih platformah vid KPK do mejnfrejmiv Isnuyut porti pid Microsoft Windows vsi varianti UNIX vklyuchayuchi FreeBSD ta GNU Linux Plan 9 Mac OS ta Mac OS X iPhone OS 2 0 i vishe Palm OS OS 2 Amiga AS 400 ta navit en Symbian ta Android U miru starinnya platformi yiyi pidtrimka v osnovnij gilci movi pripinyayetsya Napriklad z versiyi 2 6 pripinena pidtrimka Windows 95 Windows 98 ta Windows ME Odnak na cih platformah mozhna vikoristovuvati poperedni versiyi Python spilnota aktivno pidtrimuye versiyi Python pochinayuchi vid 2 3 dlya nih vihodyat vipravlennya Pri comu na vidminu vid bagatoh portovanih sistem dlya vsih osnovnih platform Python maye pidtrimku harakternih dlya danoyi platformi tehnologij napriklad Microsoft COM DCOM Navit bilshe isnuye specialna versiya Python dlya virtualnoyi mashini Java Jython sho dozvolyaye interpretatoru vikonuvatisya na bud yakij sistemi yaka pidtrimuye Java pri comu klasi Java mozhut bezposeredno vikoristovuvatisya z Python j navit buti napisanimi na nomu Takozh kilka proyektiv zabezpechuyut integraciyu z platformoyu Microsoft NET osnovni z yakih IronPython ta Tipi j strukturi danihPython pidtrimuye dinamichnu tipizaciyu tobto tip zminnoyi viznachayetsya lishe pid chas vikonannya Z bazovih tipiv slid zaznachiti pidtrimku cilih chisel dovilnoyi dovzhini i kompleksnih chisel Python maye bagatu biblioteku dlya roboti z ryadkami zokrema kodovanimi v yunikodi Z kolekcij Python pidtrimuye kortezhi tuples masivi slovniki asociativni masivi i vid versiyi 2 4 mnozhini Sistema klasiv pidtrimuye mnozhinne uspadkuvannya i metaprogramuvannya Bud yakij tip vklyuchayuchi bazovi vhodit do sistemi klasiv j za neobhidnosti mozhlive uspadkuvannya navit vid bazovih tipiv MozhlivostiInteraktivnij rezhim Podibno Lispu ta Prologu v rezhimi vidlagodzhennya interpretator Python maye interaktivnij rezhim roboti pri yakomu vvedeni z klaviaturi virazi vidrazu zh vikonuyutsya a rezultat vivoditsya na ekran Cej rezhim cikavij ne tilki novachkam ale j dosvidchenim programistam yaki mozhut protestuvati v interaktivnomu rezhimi bud yakij fragment kodu persh nizh vikoristovuvati jogo v osnovnij programi abo prosto vikoristovuvati yak kalkulyator z velikim naborom funkcij Dialog roboti z Python v interaktivnomu rezhimi maye takij viglyad gt gt gt 2 100 pidnesennya 2 do 100 go stepenya 1267650600228229401496703205376 L gt gt gt from math import import matematichnih funkcij gt gt gt sin pi 0 5 obchislennya sinusa vid polovini pi 1 0 gt gt gt help sorted dopomogu po funkciyi sorted Help on built in function sorted in module builtin sorted sorted iterable cmp none key none reverse false gt new sorted list V interaktivnomu rezhimi dostupnij debager pdb ta sistema dovidki viklikayetsya za help Sistema dopomogi pracyuye dlya moduliv klasiv i funkcij tilki yaksho ti buli zabezpecheni ryadkami dokumentaciyi Krim vbudovanoyi isnuye j pokrashena interaktivna obolonka IPython Ob yektno oriyentovane programuvannya Dizajn movi Python pobudovanij navkolo ob yektno oriyentovanoyi modeli programuvannya Realizaciya OOP v Python ye elegantnoyu potuzhnoyu ta dobre produmanoyu ale razom z tim dostatno specifichnoyu v porivnyanni z inshimi ob yektno oriyentovanimi movami Mozhlivosti ta osoblivosti Klasi ye odnochasno ob yektami z usima nizhche navedenimi mozhlivostyami Uspadkuvannya v tomu chisli mnozhinne Polimorfizm vsi funkciyi virtualni Inkapsulyaciya dva rivni zagalnodostupni ta prihovani metodi i polya Osoblivist prihovani chleni dostupni dlya vikoristannya ta pomicheni yak prihovani lishe osoblivimi imenami Specialni metodi sho keruyut zhittyevim ciklom ob yekta konstruktori destruktori rozpodilniki pam yati Perevantazhennya operatoriv usih krim is i simvolnih logichnih Vlastivosti imitaciya polya za dopomogoyu funkcij Upravlinnya dostupu do poliv emulyaciya poliv i metodiv chastkovij dostup tosho Metodi dlya upravlinnya najposhirenishimi operaciyami istinnisne znachennya len gliboke kopiyuvannya serializaciya iteraciya po ob yektu Metaprogramuvannya upravlinnya stvorennyam klasiv trigeri na stvorennya klasiv ta in Povna introspekciya Klasovi ta statichni metodi klasovi polya Klasi vkladeni u funkciyi ta inshi klasi Funkcionalne programuvannya Python pidtrimuye paradigmu funkcionalnogo programuvannya zokrema funkciya ye ob yektom funkciyi vishih poryadkiv rekursiya rozvinena obrobka spiskiv spiskovi virazi operaciyi nad poslidovnostyami iteratori analog zamikan closures chastkove zastosuvannya funkciyi mozhlivist realizaciyi inshih zasobiv na samij movi napriklad karring Moduli ta paketi Programne zabezpechennya zastosunok abo biblioteka na Python oformlyuyetsya u viglyadi moduliv yaki u svoyu chergu mozhut buti zibrani v pakunki Moduli mozhut roztashovuvatisya yak u katalogah tak i v ZIP arhivah Moduli mozhut buti dvoh tipiv za svoyim pohodzhennyam moduli napisani na chistomu Python i moduli rozshirennya extension modules napisani na inshih movah programuvannya Napriklad u standartnij biblioteci ye chistij modul pickle i jogo analog na Si cPickle Modul oformlyayetsya u viglyadi okremogo fajlu a paket u viglyadi okremogo katalogu Pidklyuchennya modulya do programi zdijsnyuyetsya operatorom import Pislya importu modul predstavlenij okremim ob yektom sho daye dostup do prostoru imen modulya U hodi vikonannya programi modul mozhna perezavantazhiti funkciyeyu reload Introspekciya Python pidtrimuye povnu introspekciyu chasu vikonannya Ce oznachaye sho dlya bud yakogo ob yekta mozhna otrimati vsyu informaciyu pro jogo vnutrishnyu strukturu Zastosuvannya introspekciyi metaprogramuvannya ye vazhlivoyu chastinoyu togo sho nazivayut pythonic style i shiroko zastosovuyetsya v bibliotekah i frejmvorkah Python takih yak en PLY CherryPy Django ta inshih zaoshadzhuyuchi chas programista sho nimi koristuyetsya Obrobka vinyatkiv Obrobka vinyatkiv pidtrimuyetsya v Python dopomogoyu operatoriv try except else finally raise sho utvoryuyut blok obrobki vinyatkiv U zagalnomu vipadku blok maye takij viglyad try Tut kod v yakomu mozhe viniknuti vinyatkova situaciya raise ExceptionType message except Tip vinyatku1 Tip vinyatku2 Zminna Kod v bloci vikonuyetsya yaksho tip vinyatku zbigayetsya z odnim z tipiv Tip vinyatku1 Tip vinyatku2 abo ye spadkoyemcem odnogo z cih tipiv Otrimanij vinyatok dostupnij v neobov yazkovij Zminnij except Tip vinyatku3 Tip vinyatku4 Zminna Kilkist blokiv except ne obmezheno raise Zgeneruvati vinyatok poverh otrimanogo bez parametriv povtorno zgeneruvati otrimane except Bude vikonano za bud yakogo vinyatku ne obroblenogo tipizovanimi blokami except else Kod bloku vikonuyetsya yaksho ne bulo otrimano vinyatkiv finally Bude vikonano v bud yakomu vipadku mozhlivo pislya vidpovidnogo bloku except abo else Spilne vikoristannya else except i finally stalo mozhlivo tilki pochinayuchi z Python 2 5 Informaciya pro potochnij vinyatok zavzhdi dostupna cherez sys exc info Krim znachennya vinyatku Python takozh zberigaye stan steku azh do tochki zbudzhennya vinyatku tak zvanij traceback Na vidminu vid mov programuvannya sho kompilyuyutsya v Python vikoristannya vinyatku ne prizvodit do znachnih nakladnih vitrat a chasto navit dozvolyaye priskoriti vikonannya program i duzhe shiroko vikoristovuyetsya Vinyatki uzgodzhuyutsya z filosofiyeyu Python 10 j punkt dzenu Python Pomilki nikoli ne povinni ignoruvatisya ta ye odnim iz zasobiv pidtrimki kachinoyi tipizaciyi Inodi zamist yavnoyi obrobki vinyatkiv zruchnishe vikoristovuvati blok with dostupnij pochinayuchi z Python 2 5 Iteratori U programah na Python shiroko vikoristovuyutsya iteratori Cikl for mozhe pracyuvati yak z poslidovnistyu tak i z iteratorami Usi kolekciyi yak pravilo nadayut iterator Ob yekti viznachenogo koristuvachem klasu tezh mozhut buti iteratorami Modul itertools standartnoyi biblioteki mistit bagato korisnih funkcij dlya roboti z iteratorami Na vidminu vid zvichajnih poslidovnostej vsi elementi yakih zberigayutsya v pam yati otrimannya nastupnogo elementa zabezpechuye generator specialna funkciya zvernennya do yakoyi obchislyuye i povertaye nastupnij element generatora Generatori Odniyeyu z cikavih mozhlivostej movi ye generatori funkciyi sho mizh viklikami zberigayut vnutrishnij stan znachennya lokalnih zminnih i potochnu instrukciyu div takozh spivprograma Generatori mozhut vikoristovuvatisya yak iteratori dlya struktur danih i dlya linivih obchislen Napriklad generator chisel Fibonachchi def fib a b 1 1 while True yield a a b b a b while x in fib print x Pri vikliku generatora funkciya negajno povertaye ob yekt iterator yakij zberigaye potochnu tochku vikonannya ta stan lokalnih zminnih funkciyi Pri zapiti nastupnogo znachennya za dopomogoyu metodu next yakij neyavno viklikayetsya v cikli for generator prodovzhuye vikonannya funkciyi vid poperednoyi tochki zupinu do nastupnogo operatora yield abo return U Python 2 4 z yavilisya generatorni virazi virazi sho dayut u rezultati generator Generatorni virazi dozvolyayut zaoshaditi pam yat tam de inakshe potribno bulo b vikoristovuvati spisok iz promizhnimi rezultatami gt gt gt sum i for i in xrange 1 100 if i 2 0 2500 U comu prikladi pidsumovuyutsya vsi neparni chisla vid 1 do 99 Pochinayuchi z versiyi 2 5 Python pidtrimuye povnocinni spivproceduri teper v generator mozhna peredavati znachennya za dopomogoyu metodu send ta zbudzhuvati v jogo konteksti vinyatok za dopomogoyu metodu throw Keruvannya kontekstom vikonannya U Python 2 5 z yavilisya zasobi dlya keruvannya kontekstom vikonannya bloku kodu operator with ta modul contextlib Operator mozhe zastosovuvatisya v tih vipadkah koli do ta pislya deyakih dij obov yazkovo mayut vikonuvatisya yakis inshi diyi nezalezhno vid stvorenih u bloci vinyatkiv abo operatoriv return fajli maye buti zakrito resursi zvilneno perenapravlennya standartnogo vvedennya vivedennya zaversheno tosho Operator polegshuye chitannya kodu otzhe dopomagaye unikati pomilok Dekoratori Pochinayuchi z versiyi 2 4 Python dozvolyaye vikoristovuvati tak zvani Dekoratori ne slid plutati z odnojmennim shablonom proyektuvannya dlya pidtrimki isnuyuchoyi praktiki peretvorennya funkcij ta metodiv u misci viznachennya dekoratoriv mozhe buti dekilka Pislya dovgih debativ dlya dekoratoriv stav vikoristovuvatisya simvol u ryadkah sho pereduyut viznachennyu funkciyi abo metodu Nastupnij priklad mistit opis statichnogo metodu bez zastosuvannya dekoratora def my wonderful method return Deyakij metod my wonderful method staticmethod my wonderful method i za dopomogoyu dekoratora staticmethod def my wonderful method return Deyakij metod Dekorator ce funkciya pershim argumentom yakoyi ye dekorovana funkciya abo metod Dekoratori mozhna vvazhati elementom aspektno oriyentovanogo programuvannya Z versiyi 2 6 dekoratori mozhna vikoristovuvati z klasami analogichno funkciyam Inshi mozhlivosti U Python ye she kilka mozhlivostej sho vidriznyayut jogo vid bagatoh inshih mov visokoyu gnuchkistyu ta dinamichnistyu Napriklad klas ye ob yektom a v operatori viznachennya klasu mozhna vikoristovuvati virazi v spisku batkivskih klasiv def getClass return dict class D getClass pass d D Mozhna modifikuvati bagato ob yektiv pid chas vikonannya napriklad klasi gt gt gt class X object pass gt gt gt y X gt gt gt y wrongMethod takogo metodu poki nemaye Traceback most recent call last File lt stdin gt line 1 in lt module gt AttributeError X object has no attribute wrongMethod gt gt gt X wrongMethod lambda self im here dodamo jogo gt gt gt y wrongMethod tak yak dostup do metodu prizvodit do poshuku po dict klasu im here to wrongMethod staye dostupnim vsim ekzemplyaramBibliotekiStandartna biblioteka Python postavlyayetsya z batarejkami v komplekti Bagata standartna biblioteka ye odniyeyu z privablivostej movi Python Tut ye zasobi dlya roboti z bagatma merezhevimi protokolami ta formatami Internetu napriklad moduli dlya napisannya HTTP serveriv ta kliyentiv dlya rozboru ta stvorennya poshtovih povidomlen dlya roboti z XML tosho Nabir moduliv dlya roboti z operacijnoyu sistemoyu dozvolyaye pisati kros platformni zastosunki Isnuyut moduli dlya roboti z regulyarnimi virazami tekstovimi koduvannyami multimedijnimi formatami kriptografichnimi protokolami arhivami serializaciyeyu danih yunit testuvannyam ta in Moduli rozshirennya ta programni interfejsi Krim standartnoyi biblioteki isnuye bagato inshih sho nadayut interfejs do vsih sistemnih viklikiv na riznih platformah zokrema na platformi Win32 pidtrimuyutsya vsi vikliki Win32 API a takozh COM v obsyazi ne menshomu nizh u Visual Basic abo Delphi Isnuye velika kilkist prikladnih bibliotek dlya Python u riznomanitnih galuzyah vebrozrobka bazi danih obrobka zobrazhen obrobka tekstu chiselni metodi programi operacijnoyi sistemi tosho Dlya Python prijnyata specifikaciya programnogo interfejsu do baz danih ta rozrobleno vidpovidni cij specifikaciyi paketi dlya dostupu do riznih SUBD PostgreSQL Oracle Sybase Firebird Interbase Informix Microsoft SQL Server MySQL ta sqlite Na platformi Microsoft Windows dostup do BD mozhlivij cherez ADO ADOdb Komercijnij paket mxODBC dlya dostupu do SUBD cherez ODBC dlya platform Windows i UNIX rozroblenij eGenix Dlya Python napisano bagato ORM SQLObject SQLAlchemy Dejavu Django vikonani programni karkasi dlya rozrobki vebzastosunkiv Django Pylons Biblioteka NumPy dlya roboti z bagatovimirnimi masivami dozvolyaye dosyagti produktivnosti naukovih rozrahunkiv porivnyannoyi zi specializovanimi paketami SciPy vikoristovuye NumPy i nadaye dostup do velikogo spektra matematichnih algoritmiv matrichna algebra BLAS level 1 3 i LAPACK ShPF Biblioteka WSGI interfejs shlyuzu z vebserverom Python Web Server Gateway Interface Python nadaye prostij i zruchnij programnij interfejs dlya napisannya vlasnih moduliv na movah S ta C Instrument SWIG dozvolyaye majzhe avtomatichno otrimuvati priv yazki dlya vikoristannya C C bibliotek u kodi na Python Mozhlivosti cogo ta inshih instrumentiv variyuyutsya vid avtomatichnoyi generaciyi C C Fortran Python interfejsiv za specialnimi fajlami SWIG pyste SIP pyfort do nadannya zruchnishih API boost python CXX ta in Instrument standartnoyi biblioteki dozvolyaye programam Python bezposeredno viklikati funkciyi z dinamichnih bibliotek DLL napisanih na C Isnuyut moduli sho dozvolyayut vbudovuvati kod na S C pryamo u vihidni fajli Python stvoryuyuchi rozshirennya na lotu pyinline weave Dlya pidklyuchennya matematichnih funkcij osoblivo iz zastosuvannyam NumPy narazi oficijno rekomendovanim ye Cython Inshij pidhid polyagaye u vbudovuvanni interpretatora Python u zastosunki Python legko vbudovuyetsya v programi na Java C C Ocaml Vzayemodiya Python zastosunkiv z inshimi sistemami mozhliva takozh za dopomogoyu CORBA XML RPC SOAP COM Za dopomogoyu Pyrex mozhliva kompilyaciya Python podibnoyi movi dodano mozhlivist tipizaciyi v ekvivalentnij Si kod i zv yazuvannya iz zovnishnimi modulyami Eksperimentalnij proyekt shed skin peredbachaye stvorennya kompilyatora dlya transformaciyi neyavno tipizovanih Python program v optimizovanij S kod Pochinayuchi z versiyi 0 22 shed skin dozvolyaye kompilyuvati okremi funkciyi v moduli rozshiren Povna kompilyaciya stanom na 1 lipnya 2007 daleka vid zavershennya Python ta perevazhna bilshist bibliotek do nogo bezkoshtovni j postavlyayutsya u vihidnih kodah Navit bilshe na vidminu vid bagatoh vidkritih sistem licenziya niyak ne obmezhuye vikoristannya Python u komercijnih rozrobkah ta ne nakladaye niyakih zobov yazan krim zaznachennya avtorskih prav Grafichni biblioteki Z Python postavlyayetsya biblioteka tkinter na osnovi Tcl Tk dlya stvorennya kros platformnih program z grafichnim interfejsom Dlya naukovo tehnichnoyi meti najbilshogo poshirennya nabulo vikoristannya matplotlib biblioteki z interfejsom analogichnim MATLAB Plot Tool Isnuyut rozshirennya sho dozvolyayut vikoristovuvati vsi osnovni GUI biblioteki wxPython zasnovane na biblioteci wxWidgets PyGTK dlya GTK PyQt ta PySide dlya Qt ta inshi Deyaki z nih takozh nadayut shiroki mozhlivosti dlya roboti z bazami danih grafikoyu ta merezhami vikoristovuyuchi vsi mozhlivosti biblioteki na yakij bazuyutsya Dlya stvorennya igor ta program sho vimagayut nestandartnogo interfejsu mozhna vikoristovuvati biblioteku Pygame Vona takozh nadaye veliki zasobi roboti z multimedia z yiyi dopomogoyu mozhna keruvati zvukom i zobrazhennyami vidtvoryuvati video Nadavane pygame aparatne priskorennya grafiki OpenGL maye bilsh visokorivnevij interfejs v porivnyanni z PyOpenGL sho kopiyuye semantiku S biblioteki dlya OpenGL Ye takozh PyOgr sho zabezpechuye priv yazku do OGRE visokorivnevoyi ob yektno oriyentovanoyi biblioteki 3D grafiki Krim togo isnuye biblioteka pythonOCC sho zabezpechuye priv yazku do seredovisha 3D modelyuvannya ta simulyaciyi OpenCascade Dlya roboti z rastrovoyu grafikoyu vikoristovuyetsya biblioteka Python Imaging Library Porivnyannya z inshimi movamiNajchastishe Python porivnyuyut z Perl ta Ruby Ci movi takozh ye interpretovanimi ta mayut priblizno odnakovu shvidkist vikonannya program Yak i Perl Python mozhe uspishno zastosovuvatisya dlya napisannya skriptiv scenariyiv Yak i Ruby Python ye dobre produmanoyu sistemoyu dlya OOP Zasobi funkcionalnogo programuvannya chastkovo zapozicheni z Scheme ta en U seredovishi komercijnih zastosunkiv shvidkist vikonannya program na Python mozhut porivnyuvati z Java zastosunkami Popri te sho Python maye dosit samobutnij sintaksis odnim iz principiv dizajnu ciyeyi movi ye princip najmenshogo podivu Nedoliki Div takozh spiski nedolikiv movi Python Nizka shvidkodiya Python yak i bagato inshih interpretovanih mov yaki ne zastosovuyut napriklad JIT kompilyatori mayut zagalnij nedolik porivnyano nizku shvidkist vikonannya program Odnak u vipadku z Python cej nedolik kompensuyetsya zmenshennyam chasu rozrobki programi U serednomu programa napisana na Python v 2 4 razi kompaktnisha nizh yiyi analog na C abo Java Zberezhennya bajt kodu fajli pyc i pyo dozvolyaye interpretatoru ne vitrachati zajvij chas na perekompilyaciyu kodu moduliv pri kozhnomu zapusku na vidminu napriklad vid movi Perl Krim togo isnuye specialna JIT biblioteka psyco prote prizvodit do zbilshennya spozhivannya operativnoyi pam yati Efektivnist psyco znachnoyu miroyu zalezhit vid arhitekturi programi Isnuyut proyekti realizacij movi Python sho vvodyat visokoproduktivni virtualni mashini VM yak kompilyatora zadnogo planu Prikladami takih realizacij mozhe sluzhiti PyPy sho bazuyetsya na LLVM bilsh rannoyu iniciativoyu ye proyekt Parrot Ochikuyetsya sho vikoristannya VM tipu LLVM prizvede do tih samih rezultativ sho j vikoristannya analogichnih pidhodiv dlya realizacij movi Java de nizka obchislyuvalna produktivnist v osnovnomu podolana Nizka program bibliotek dlya integraciyi z inshimi movami programuvannya div vishe nadayut mozhlivist vikoristovuvati inshu movu dlya napisannya kritichnih dilyanok U najpopulyarnishij realizaciyi movi Python interpretator dosit velikij i bilsh vimoglivij do resursiv nizh v analogichnih populyarnih realizaciyah Tcl Forth LISP abo Lua sho obmezhuye jogo zastosuvannya u vbudovanih sistemah Tim ne menshe Python znajshov zastosuvannya v KPK i deyakih modelyah mobilnih telefoniv Vidsutnist statichnoyi tipizaciyi Chastina informaciyi v cij statti zastarila Vi mozhete dopomogti onovivshi yiyi Mozhlivo storinka obgovorennya mistit zauvazhennya shodo potribnih zmin Vidsutnist statichnoyi tipizaciyi ye ne stilki vadoyu interpretatora skilki viborom rozrobnika movi Rich u tomu sho v Python prijnyata tak zvana kachina tipizaciya Cherez ce tipi peredanih znachen nedostupni na etapi kompilyaciyi ta pomilki na zrazok AttributeError mozhut vinikati pid chas vikonannya Vidsutnist statichnoyi tipizaciyi takozh ye odniyeyu z osnovnih prichin nizkoyi shvidkodiyi Isnuyut moduli yaki dozvolyayut kontrolyuvati tipi parametriv funkcij na etapi vikonannya napriklad typecheck abo method signature checking decorators Dodavannya neobov yazkovoyu statichnoyi tipizaciyi parametriv funkciyi zaplanovano dlya Python3000 Pri comu odnak bezposeredno interpretator ne bude pereviryati tipi a tilki dodavati vidpovidnu informaciyu do metadanih funkciyi dlya yiyi informaciyi podalshogo vikoristannya modulyami rozshiren Vidsutnist statichnoyi tipizaciyi i deyaki inshi prichini ne dozvolyayut realizuvati v Python mehanizm perevantazhennya funkcij na etapi kompilyaciyi Mozhlivosti Python dozvolyayut realizuvati dinamichne perevantazhennya na etapi vikonannya sho zvichajno upovilnyuye viklik bo virishennya yaku same funkciyu viklikati provoditsya pri kozhnomu zvernenni i ye v zagalnomu vipadku dosit skladnoyu proceduroyu Vidsutnist perevantazhennya v Python kompensuyut vikoristannyam funkcij z dinamichnimi parametrami Plani z pidtrimki perevantazhennya v Python3000 Perevantazhennya funkcij realizovana riznimi storonnimi bibliotekami v tomu chisli PEAK nadaye nadzvichajno bagatij mozhlivostyami mehanizm perevantazhennya funkcij z vikoristannyam dovilnih pravil Nemozhlivist modifikaciyi vbudovanih klasiv U porivnyanni z Ruby ta deyakimi inshimi movami v Python vidsutnya mozhlivist modifikuvati vbudovani klasi taki yak int str float list ta inshi sho odnak dozvolyaye Python spozhivati menshe operativnoyi pam yati i shvidshe pracyuvati She odniyeyu prichinoyu vvedennya takogo obmezhennya ye neobhidnist uzgodzhennya z modulyami rozshirennya Bagato moduliv z metoyu optimizaciyi shvidkodiyi peretvoryat Python ob yekti elementarnih tipiv do vidpovidnih Si tipiv zamist manipulyacij z nimi za dopomogoyu Si API Globalne blokuvannya interpretatora GIL GIL Global Interpreter Lock problema pritamanna CPython Stackless ta PyPy ale vidsutnya v Jython ta IronPython Pri svoyij roboti osnovnij interpretator Python postijno vikoristovuye veliku kilkist potikonebezpechnih danih V osnovnomu ce slovniki v yakih zberigayutsya atributi ob yektiv Dlya uniknennya rujnuvannya cih danih pri spilnij modifikaciyi z riznih potokiv pered pochatkom vikonannya dekilkoh instrukcij za zamovchuvannyam 100 potik interpretatora zahoplyuye GIL a pislya zakinchennya zvilnyaye Vnaslidok ciyeyi osoblivosti v kozhen moment chasu mozhe vikonuvatisya tilki odna nit Python kodu navit yaksho na komp yuteri ye kilka procesoriv abo procesornih yader GIL takozh zvilnyayetsya na chas vikonannya blokuyuchih operacij takih yak vvedennya vivedennya zmini perevirka stanu sinhronizuyuchih primitiviv ta inshih takim chinom yaksho odna nit blokuyetsya inshi mozhut vikonuvatisya Bula zroblena sproba perehodu do bilsh granulovanoyi sinhronizaciyi prote cherez chasti zahoplennya zvilnennya blokuvan cya realizaciya viyavilasya zanadto povilnoyu U najblizhchomu majbutnomu perehid vid GIL do inshih tehnik ne peredbachayetsya odnak ye python safethread CPython bez GIL i z deyakimi inshimi zminami za tverdzhennyami jogo avtoriv na odnonitevih zastosunkah shvidkist vidpovidaye 60 65 vid shvidkosti originalnomu CPython Cya problema maye dva osnovnih varianti virishennya Pershij vidmova vid spilnogo vikoristannya zminyuvanih danih Pri comu dani dublyuyutsya v nityah i neobhidnist zabezpechennya yihnoyi sinhronizaciyi yaksho taka potribna lyagaye na programista Cej pidhid vede do zbilshennya spozhivannya operativnoyi pam yati odnak ne nastilki silno yak pri vikoristanni procesiv Drugij pidhid zabezpechennya bilsh granulovanoyi sinhronizaciyi dlya okremih struktur danih U comu vipadku padaye produktivnist vnaslidok zbilshennya chisla zvilnen zahoplen blokuvan Yaksho neobhidno paralelne vikonannya dekilkoh nitej Python kodu to mozhna skoristatisya procesami napriklad modulem processing yakij imituye semantiku standartnogo modulya threading ale vikoristovuye procesi zamist nitej Ye bezlich moduliv sho sproshuyut napisannya paralelnih ta abo rozpodilenih zastosunkiv na Python takih yak parallelpython Pypar pympi ta inshi GIL zvilnyayetsya pri vikonanni kodu bilshosti rozshiren napriklad NumPy SciPy dozvolyayuchi na chas rozrahunkiv vikonuvatisya inshomu Python niti Inshim rishennyam mozhe buti vikoristannya IronPython abo Jython pozbavlenih danogo nedoliku RealizaciyiPython portovanij na vsi vidomi platformi vid KPK do mejnfrejmiv Isnuyut porti pid Windows vsi varianti UNIX vklyuchno z Linux Plan 9 Mac OS i Mac OS X Palm OS OS 2 Amiga AS 400 i navit OS 390 i Symbian Pri comu na vidminu vid bagatoh portovanih sistem na kozhnij platformi Python pidtrimuye harakterni dlya danoyi platformi tehnologiyi napriklad Microsoft COM Krim togo isnuye specialna versiya Python dlya virtualnoyi mashini Java Jython sho dozvolyaye interpretatoru vikonuvatisya na bud yakij sistemi sho pidtrimuye Java klasi Java mozhut bezposeredno vikoristovuvatisya z Python i navit buti napisanimi na Python Neshodavno pochalasya rozrobka sistemi spryamovanoyi na povnishu integraciyu z platformoyu NET Iron Python Podalsha rozrobka PEP ce dokument zi standartizovanim dizajnom sho nadaye zagalnu informaciyu pro movu Python vklyuchayuchi novi propoziciyi opisi ta roz yasnennya mozhlivostej movi PEP proponuyutsya yak osnovne dzherelo dlya propoziciyi novih mozhlivostej i dlya roz yasnennya viboru togo abo inshogo dizajnu dlya osnovnih elementiv movi Vidatni PEP recenzuyutsya i komentuyutsya Grafik i sumisnist Seriyi Python 2 x i Python 3 x protyagom kilkoh vipuskiv isnuvali paralelno pri comu seriya 2 x vikoristovuvalasya dlya zabezpechennya sumisnosti PEP 3000 mistit bilshe informaciyi pro vipuski Python 3 0 zvorotno ne sumisnij z poperednoyu seriyeyu 2 x Kod Python 2 x shvidshe za vse bude vidavati pomilki pri vikonanni v Python 3 0 Dinamichna tipizaciya Python razom zi zminami dekilkoh metodiv slovnikiv robit mehanichnij pereklad z Python 2 x v Python 3 0 duzhe skladnim Odnak utilita 2to3 zdatna zrobiti bilshist roboti z perekladu kodu vkazuyuchi na pidozrili yij chastini za dopomogoyu komentariv i poperedzhen PEP 3000 rekomenduye trimati vihidnij kod dlya seriyi 2 x i robiti vipuski dlya Python 3 x za dopomogoyu 2to3 Otrimanij kod ne slid redaguvati poki programa povinna buti pracezdatnoyu v Python 2 x Rozrobniki pripinili pidtrimuvati gilku Python 2 x u sichni 2020 roku Ostannya vipushena versiya gilki Python 2 x Python 2 7 Dali rozrobka vedetsya lishe u gilci Python 3 x Mozhlivosti Osnovni zmini vneseni do versiyi 3 0 Sintaksichna mozhlivist dlya anotaciyi parametriv i rezultatu funkcij napriklad dlya peredachi informaciyi pro tip abo dokumentuvannya Povnij perehid na unicode dlya ryadkiv Vvedennya novogo tipu nezminni bajti i tipu zminyuvanij bufer Obidva neobhidni dlya podannya dvijkovih danih Nova pidsistema vvodu vivodu modul io sho maye okremi viglyadi dlya binarnih i tekstovih danih Abstraktni klasi abstraktni metodi ye vzhe v 2 6 Iyerarhiya tipiv dlya chisel Virazi dlya slovnikiv i mnozhin k v for k v in a dict i el1 el2 el3 za analogiyeyu zi spiskovimi virazami Zmini print z vbudovanogo virazu u vbudovanu funkciyu Ce dozvolit modulyam robiti zmini pidlashtovuyuchis pid rizne vikoristannya funkciyi a takozh sprostit kod U Python 2 6 cya mozhlivist aktivuyetsya vvedennyam from future import print function Funkciya reduce bula peremishena z vbudovanogo prostoru v modul functools Prote map abo filter zalishilisya v vbudovanomu prostori Vidalennya deyakih zastarilih mozhlivostej yaki pidtrimuyutsya u gilci 2 x dlya sumisnosti zokrema klasi starogo stilyu cilochiselnij podil z obrizannyam rezultatu yak povedinka za vmovchannyam ryadkovi vinyatki neyavnij vidnosnij import operator exec tosho Reorganizaciya standartnoyi biblioteki Novij sintaksis dlya metaklasiv Zminenij sintaksis prisvoyennya Stalo mozhlivim napriklad nadannya a rest b range 5 Z inshogo boku formalni parametri funkcij na zrazok def foo a b c bilshe nepripustimi Poyednannya z tablichnimi procesorami Vlitku 2023 roku zgidno povidomlennya Microsoft dlya koristuvachiv beta versiyi Microsoft 365 Python bulo dodano do Microsoft Excel Nove poyednannya maye na meti pokrashiti mozhlivosti analizu ta vizualizaciyi danih v Excel dozvolyayuchi koristuvacham otrimuvati dostup do Python bezposeredno zi strichki Excel Kompaniya Microsoft poyasnila sho koristuvacham teper ne potribno bilshe vstanovlyuvati bud yake dodatkove programne zabezpechennya abo nalashtovuvati nadbudovu dlya dostupu do funkcionalnih mozhlivostej oskilki integraciya Python do Excel bude chastinoyu vbudovanih z yednuvachiv Excel ta instrumentu ETL Power Query Osnovni propoziciyi Perelik vsih propozicij navedeno na oficijnomu sajti razom iz yih statusom Nizhche navedeno ti yaki zdobuli najbilshe poshirennya PEP8 Nastanova shodo stilyu oformlennya kodu Specializovani pidmnozhini rozshirennya PythonNa osnovi Python bulo stvoreno kilka specializovanih pidmnozhin movi v osnovnomu priznachenih dlya statichnoyi kompilyaciyi v mashinnij kod Deyaki z nih RPython stvorena v ramkah proyektu PyPy znachno obmezhena realizaciya Python bez dinamizmu chasu vikonannya ta deyakih inshih mozhlivostej RPython kod mozhna kompilyuvati v bagato inshih mov platform C JavaScript Lisp NET LLVM Na RPython napisano interpretator PyPy Pyrex obmezhena realizaciya Python ale trohi menshe nizh RPython PyReX rozshireno mozhlivostyami statichnoyi tipizaciyi tipami z movi S i dozvolyaye vilno zmishuvati tipizovanij ta ne tipizovanij kod Priznachenij dlya napisannya moduliv rozshiren kompilyuyetsya v kod na movi S Cython rozshirena versiya Pyrex pyastra kompilyator Python kodu v asembler dlya PIC arhitekturi Shed Skin priznachenij dlya kompilyaciyi neyavno statichno tipizovanogo Python kodu v optimizovanij kod na movi C proyekt dalekij vid zavershennya PyScript ce frontend frejmvork dlya stvorennya program na Python vbudovanih u HTML kod dlya vikonannya v brauzeri Dozvolyaye importuvati bilshist moduliv Python ZastosuvannyaPython Powered Python stabilna ta poshirena mova Vona vikoristovuyetsya v bagatoh proyektah ta v riznih yakostyah yak osnovna mova programuvannya abo dlya stvorennya rozshiren ta integraciyi dodatkiv Na Python realizovana velika kilkist proyektiv takozh vona aktivno vikoristovuyetsya dlya stvorennya prototipiv majbutnih program Python vikoristovuyetsya v bagatoh velikih kompaniyah Dokumentaciya ta pidruchnikiOpis standartnih ob yektiv ta moduliv divitsya mistit formalnishe viznachennya movi Shob pisati rozshirennya na C ta C chitajte ta Mark Piligrim Porinte u Python 3 Integrovani seredovisha rozrobkiDlya Python isnuye kilka specializovanih seredovish rozrobki zokrema IDLE Thonny PyCharm PyScripter Spyder ostannij priznacheno dlya naukovih rozrobok a takozh rozshirennya dlya Visual Studio Code i plagin PyDev dlya Eclipse Div takozhAnaconda Interpretator Inshi populyarni interpretovani movi programuvannya PHP Perl RubyDzherelaHistory and License Python documentation Thomas Wouters 2 zhovtnya 2023 Python Insider Arhiv originalu za 10 zhovtnya 2023 Procitovano 25 zhovtnya 2023 Donovan Ryan 23 kvitnya 2020 Stackoverflow Blog Stack Overflow Arhiv originalu za 16 zhovtnya 2020 Procitovano 09 zhovtnya 2020 Thomas Wouters Arhiv originalu za 22 zhovtnya 2023 Procitovano 25 zhovtnya 2023 Arhiv originalu za 16 grudnya 2019 Procitovano 1 sichnya 2020 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya The python Open Source Project on Open Hub Languages Page 2006 d Track Q124688 The Python Programming Language Source Code 2007 d Track Q364 Arhiv originalu za 6 sichnya 2018 Procitovano 28 serpnya 2008 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya Guido van Rossum Python Reference Manual release 2 4 4 18 October 2006 Arhiv originalu za 1 veresnya 2016 Procitovano 4 lipnya 2010 Arhiv originalu za 17 lyutogo 2016 Procitovano 4 lipnya 2010 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya Arhiv originalu za 28 sichnya 2007 Procitovano 4 lipnya 2010 Arhiv originalu za 2 chervnya 2009 Procitovano 4 lipnya 2010 IEEE Spectrum opublikuvala rejting najpopulyarnishih mov programuvannya 2023 roku Avtor Artem Zhitkevich 30 08 2023 Arhiv originalu za 17 lipnya 2005 Procitovano 22 serpnya 2014 Zhartivlivij natyak na nacionalnist Gvido Arhiv originalu za 6 sichnya 2018 Procitovano 28 serpnya 2008 Arhiv originalu za 6 chervnya 2017 Procitovano 4 lipnya 2010 Python on Android anglijskoyu www damonkohler com Arhiv originalu za 28 sichnya 2011 Procitovano 19 grudnya 2009 Port Specific Changes Windows Python v2 6 1 documentation What s New in Python 2 6 anglijskoyu Python Software Foundation Arhiv originalu za 28 sichnya 2011 Procitovano 11 grudnya 2008 Arhiv originalu za 4 serpnya 2018 Procitovano 20 chervnya 2019 Arhiv originalu za 6 listopada 2013 Procitovano 5 lipnya 2010 Professional Python Software Skills and Services nedostupne posilannya z serpnya 2019 Arhiv originalu za 9 chervnya 2021 Procitovano 5 lipnya 2010 Arhiv originalu za 30 serpnya 2008 Procitovano 5 lipnya 2010 Arhiv originalu za 19 kvitnya 2008 Procitovano 5 lipnya 2010 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya Arhiv originalu za 8 lyutogo 2007 Procitovano 5 lipnya 2010 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya Arhiv originalu za 3 lyutogo 2007 Procitovano 5 lipnya 2010 Arhiv originalu za 3 lyutogo 2007 Procitovano 5 lipnya 2010 Arhiv originalu za 15 sichnya 2007 Procitovano 5 lipnya 2010 Arhiv originalu za 6 lipnya 2010 Procitovano 5 lipnya 2010 Arhiv originalu za 11 serpnya 2007 Procitovano 5 lipnya 2010 Arhiv originalu za 26 veresnya 2018 Procitovano 5 lipnya 2010 Arhiv originalu za 11 chervnya 2010 Procitovano 5 lipnya 2010 Arhiv originalu za 11 serpnya 2011 Procitovano 5 lipnya 2010 Arhiv originalu za 9 chervnya 2021 Procitovano 5 lipnya 2010 Arhiv originalu za 15 chervnya 2011 Procitovano 5 lipnya 2010 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya Arhiv originalu za 29 sichnya 2009 Procitovano 5 lipnya 2010 Arhiv originalu za 8 serpnya 2011 Procitovano 5 lipnya 2010 Arhiv originalu za 18 bereznya 2009 Procitovano 5 lipnya 2010 Arhiv originalu za 31 serpnya 2012 Procitovano 6 lipnya 2010 Arhiv originalu za 10 serpnya 2013 Procitovano 6 lipnya 2010 Python C GNU g Computer Language Benchmarks Game Arhiv originalu za 28 sichnya 2011 Procitovano 1 lipnya 2009 Psyco angl JIT kompilyator dlya Python sho dozvolyaye zbilshiti shvidkist roboti program v 3 10 raziv unladen swallow A faster implementation of Python code google Arhiv originalu za 28 sichnya 2011 Procitovano 22 chervnya 2009 Goals Produce a version of Python at least 5x faster than CPython Arhiv originalu za 6 serpnya 2009 Procitovano 6 lipnya 2010 Arhiv originalu za 17 serpnya 2010 Procitovano 6 lipnya 2010 Arhiv originalu za 13 lyutogo 2008 Procitovano 6 lipnya 2010 Arhiv originalu za 8 travnya 2007 Procitovano 6 lipnya 2010 Arhiv originalu za 19 chervnya 2010 Procitovano 6 lipnya 2010 Arhiv originalu za 3 lipnya 2007 Procitovano 6 lipnya 2010 Arhiv originalu za 12 travnya 2008 Procitovano 6 lipnya 2010 Arhiv originalu za 23 lipnya 2008 Procitovano 6 lipnya 2010 Arhiv originalu za 9 listopada 2020 Procitovano 6 lipnya 2010 Project Hosting on Google Code Arhiv originalu za 22 travnya 2008 Procitovano 6 lipnya 2010 Arhiv originalu za 13 zhovtnya 2007 Procitovano 6 lipnya 2010 Arhiv originalu za 28 travnya 2010 Procitovano 6 lipnya 2010 Arhiv originalu za 6 sichnya 2010 Procitovano 6 lipnya 2010 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya Arhiv originalu za 18 zhovtnya 2007 Procitovano 6 lipnya 2010 Python for Windows 1 11 veresnya 2014 u Wayback Machine Python for UNIX 2 26 serpnya 2014 u Wayback Machine Python for Plan 9 3 26 serpnya 2014 u Wayback Machine Python for Mac OS X 4 26 serpnya 2014 u Wayback Machine Python for Palm OS 5 22 chervnya 2013 u Wayback Machine Python for Other Platforms SourceForge net 6 27 listopada 2020 u Wayback Machine angl endoflife date Arhiv originalu za 18 veresnya 2021 Procitovano 18 veresnya 2021 Arhiv originalu za 4 zhovtnya 2008 Procitovano 5 lipnya 2010 Arhiv originalu za 21 lipnya 2009 Procitovano 5 lipnya 2010 Microsoft dodala Python do Excel Avtor Artem Zhitkevich 22 08 2023 python org Arhiv originalu za 1 lipnya 2018 Procitovano 30 chervnya 2018 angl python org Arhiv originalu za 29 chervnya 2018 Procitovano 30 chervnya 2018 angl Arhiv originalu za 7 lipnya 2007 Procitovano 5 lipnya 2010 Arhiv originalu za 12 zhovtnya 2011 Procitovano 5 lipnya 2010 Arhiv originalu za 9 listopada 2020 Procitovano 12 travnya 2022 Serdar Yegulalp JUN 15 2022 Intro to PyScript Run Python in your web browser InfoWorld Podiya stalasya na 3 00 AM PDT Procitovano 26 lipnya 2022 Arhiv originalu za 18 chervnya 2010 Procitovano 5 lipnya 2010 9 Best Python IDEs and Code Editors Procitovano 27 lipnya 2022 PosilannyaPython u sestrinskih VikiproyektahPortal Programuvannya Teksti u Vikipidruchniku Fajli u Vikishovishi Golovnij sajt spilnoti rozrobnikiv Python 25 veresnya 2021 u Wayback Machine Python documentation 6 lipnya 2015 u Wayback Machine dokumentaciya movi programuvannya Python 2 Kurs Molodogo Bijcya 19 serpnya 2014 u Wayback Machine ukr Programuvannya na movi Python 3 x Pochatkovij kurs 23 veresnya 2013 u Wayback Machine ukr Vchimo Python onlajn ukr Pidruchnik z Python ukrayinskoyu 21 zhovtnya 2016 u Wayback Machine embed python compiler in html 2 Lyutij 2023 u Wayback Machine