Python – język programowania wysokiego poziomu ogólnego przeznaczenia. Posiada rozbudowany pakiet bibliotek standardowych, którego ideą przewodnią jest czytelność i klarowność kodu źródłowego. Jego składnia cechuje się przejrzystością i zwięzłością.

Python wspiera różne paradygmaty programowania: obiektowy, imperatywny oraz w mniejszym stopniu funkcyjny. Posiada w pełni dynamiczny system typów i automatyczne zarządzanie pamięcią, będąc w tym podobnym do języków Perl, Ruby, Scheme czy Tcl. Podobnie jak inne języki dynamiczne jest często używany jako język skryptowy. Interpretery Pythona są dostępne na wiele systemów operacyjnych.

Python rozwijany jest jako projekt Open Source zarządzany przez Python Software Foundation, która jest organizacją non-profit. Standardową implementacją języka jest CPython (napisany w C), ale istnieją też inne, np. Jython (napisany w Javie), CLPython napisany w Common Lisp, IronPython (na platformę .NET) i PyPy (napisany w Pythonie, zob. bootstrap).

Rozwój języka thumb|Oprogramowanie stworzone m.in. przy użyciu języka Python: PyGTK, Django, Flask, Linux Standard Base, PyUNO, pandas, Matplotlib, PyTorch, TensorFlow Pythona stworzył we wczesnych latach 90. Guido van Rossum – jako następcę języka ABC, stworzonego w (CWI – Centrum Matematyki i Informatyki w Amsterdamie). Van Rossum jest głównym twórcą Pythona, choć spory wkład w jego rozwój pochodzi od innych osób. Z racji kluczowej roli, jaką van Rossum pełnił przy podejmowaniu ważnych decyzji projektowych, często określano go przydomkiem „Benevolent Dictator for Life” (BDFL).

Nazwa języka nie pochodzi od zwierzęcia, lecz od serialu komediowego emitowanego w latach 70. przez BBC – „Monty Python’s Flying Circus” (Latający cyrk Monty Pythona). Projektant, będąc fanem serialu i poszukując nazwy krótkiej, unikalnej i nieco tajemniczej, uznał tę za świetną.

Wersja 1.2 była ostatnią wydaną przez CWI. Od 1995 roku Van Rossum kontynuował pracę nad Pythonem w Corporation for National Research Initiatives (CNRI) w Reston w Wirginii, gdzie wydał kilka wersji Pythona, do 1.6 włącznie. W 2000 roku van Rossum i zespół pracujący nad rozwojem jądra Pythona przenieśli się do BeOpen.com, by założyć zespół BeOpen PythonLabs. Pierwszą i jedyną wersją wydaną przez BeOpen.com był Python 2.0.

Po wydaniu wersji 1.6 i opuszczeniu CNRI przez van Rossuma, który zajął się programowaniem komercyjnym, uznano za wysoce pożądane, by Pythona można było używać z oprogramowaniem dostępnym na licencji GPL. CNRI i Free Software Foundation (FSF) podjęły wspólny wysiłek w celu odpowiedniej modyfikacji licencji Pythona. Wersja 1.6.1 była zasadniczo identyczna z wersją 1.6, z wyjątkiem kilku drobnych poprawek oraz licencji, dzięki której późniejsze wersje mogły być zgodne z licencją GPL. Python 2.1 pochodzi zarówno od wersji 1.6.1, jak i 2.0.

Po wydaniu Pythona 2.0 przez BeOpen.com Guido van Rossum i inni programiści z PythonLabs przeszli do Digital Creations. Cała własność intelektualna dodana od tego momentu, począwszy od Pythona 2.1 (wraz z wersjami alpha i beta), jest własnością Python Software Foundation (PSF), niedochodowej organizacji (non-profit) wzorowanej na Apache Software Foundation.

W 2008 roku został wydany Python 3.0, który był dużą zmianą i nie był w pełni wstecznie kompatybilny z wcześniejszymi wersjami.

Na rok 2026 organizacja Python Software Foundation wspiera wersje Python 3.10, 3.11, 3.12, 3.13 oraz 3.14, zgodnie z corocznym cyklem wydawniczym projektu i pięcioletnią polityką wsparcia. Python 3.15 znajduje się obecnie w fazie rozwoju alfa, a stabilne wydanie jest oczekiwane w październiku 2026 roku. Wcześniejsze wersje z serii 3.x nie otrzymują już aktualizacji bezpieczeństwa.

Python jest jednym z najczęściej wykorzystywanych języków w uczeniu maszynowym, analizie danych, automatyzacji oraz tworzeniu aplikacji internetowych. Jest powszechnie nauczany jako język wprowadzający do programowania. Od 2003 roku Python znajduje się w pierwszej dziesiątce najpopularniejszych języków programowania.

Filozofia Pythona Python realizuje jednocześnie kilka paradygmatów. Podobnie do C++, a w przeciwieństwie do Smalltalka, nie wymusza jednego stylu programowania, pozwalając na stosowanie różnych. W Pythonie możliwe jest programowanie obiektowe, programowanie strukturalne i programowanie funkcyjne. Typy sprawdzane są dynamicznie, a do zarządzania pamięcią stosuje się garbage collection.

Choć w jego popularyzacji kładzie się nacisk na różnice w stosunku do Perla, Python jest pod wieloma względami do niego podobny. Jednakże projektanci Pythona odrzucili złożoną składnię Perla na rzecz bardziej oszczędnej i – ich zdaniem – bardziej czytelnej. Mimo że podobnie do Perla, Python jest czasem klasyfikowany jako język skryptowy, wykorzystuje się go do tworzenia dużych projektów jak serwer aplikacji Zope, system wymiany plików Mojo Nation, czy nawet oprogramowanie klasy ERP – Odoo.

Typy i struktury danych thumb W Pythonie wartości, a nie zmienne, posiadają typ – tak więc Python jest językiem z typami dynamicznymi, podobnie jak Lisp, a w przeciwieństwie do Javy. W przeciwieństwie do wielu języków, wartości nie są przekazywane ani przez wartość, ani przez referencję, ale przez przypisanie.

W porównaniu z innymi językami programowania Python jest dość silnie typowany. Nie jest ani tak liberalny jak Perl, ani tak restrykcyjny jak OCaml. Reguły składniowe Pythona umożliwiają wyrażanie pojęć bez pisania dodatkowego kodu. Dla typów numerycznych zdefiniowana jest automatyczna konwersja, tak więc możliwe jest np. mnożenie liczby zespolonej przez liczbę całkowitą typu long bez rzutowania. Jednak w przeciwieństwie do Perla nie ma np. automatycznej konwersji pomiędzy napisami i liczbami; liczba nie jest prawidłowym argumentem dla operacji napisowej.

Python oferuje szeroki zakres podstawowych typów danych – w tym typy liczbowe (całkowite, zmiennoprzecinkowe, zespolone) oraz kolekcje.

Wybrane wbudowane typy danych Typ Opis Przykładstr Ciąg znaków (niezmienny)'Wikipedia', "Wikipedia" lub """Wielolinijkowy tekst"""bytes Sekwencja bajtów (niezmienna)b'Wikipedia' lub b"Wikipedia" list Lista (zmienna, zawartość, długość) [4.0, 'string', True] tuple Krotka (niezmienna) (4.0, 'string', True) set Zbiór (zmienny){4.0, 'string', True} frozenset Zbiór (niezmienny)frozenset({4.0, 'string', True}) dict Słownik, czyli tablica asocjacyjna (zmienny). {'key1': 1.0, 3: False} int Liczba całkowita o dowolnej wartości 42 float Liczba zmiennoprzecinkowa 3.1415927 complex Liczba zespolona 3+2.7jbool Wartość logiczna (prawda lub fałsz)TrueFalse NoneType Obiekt reprezentujący brak wartości, będący odpowiednikiem wartości null w innych językach None

Kolekcje Część wyżej wymienionych typów to kolekcje.

Listy, krotki (ang. ) i napisy są sekwencjami, w związku z czym udostępniają pewną liczbę wspólnych operacji (np. w identyczny sposób można iterować po kolejnych znakach napisu jak po elementach listy, czy też wskazywać elementy za pomocą indeksów). Listy to tablice o zmiennej liczbie elementów (z możliwością ich usuwania, dodawania i podmiany), zaś krotki to tablice o stałej liczbie elementów (bez możliwości usuwania, dodawania i podmiany).

Innymi typami są kolekcje nieuporządkowane: słowniki (ang. , typ dict) – znane w innych językach jako odwzorowania (ang. ) lub tablice asocjacyjne oraz zbiory (ang. ) reprezentowane przez dwa typy: zbioru zmiennego set i niezmiennego frozenset. Słownikowe klucze oraz elementy zbiorów muszą być tzw. obiektami haszowalnymi (posiadającymi metodę __hash__()) – co na ogół oznacza, że muszą być niezmienne (niemutowalne); np. kluczem słownika nie może być lista ani zbiór zmienny (typu set) – może zaś być krotka bądź zbiór niezmienny (typu frozenset), o ile zawiera wyłącznie elementy niezmienne.

Python obsługuje typowy zestaw operacji na łańcuchach tekstowych. Łańcuchy w Pythonie są niezmienne. Każda operacja, która zmieniłaby zawartość napisu (np. zamiana małych liter na wielkie) zwróci nowy napis, pozostawiając oryginalny napis bez zmian.

Należy dodać, że podstawowe kolekcje w standardowej implementacji Pythona w C są wysoce zoptymalizowane pod kątem szybkości przeszukiwania, sortowania itp.

Wszystko jest obiektem System typów w Pythonie jest ściśle związany z systemem klas. W Pythonie wszystkie wartości są obiektami, a typy wbudowane stanowią klasy, które mogą być rozszerzane przez dziedziczenie. Umożliwia to tworzenie klas pochodnych między innymi od typów str, dict, list czy int. Język obsługuje również dziedziczenie wielokrotne.

Język umożliwia rozległą introspekcję typów i klas. Typy można odczytywać i porównywać – podobnie, jak w Smalltalku, typy (opisy typów) też są typem. Atrybuty obiektu można pobrać jako słownik.

W Pythonie nie ma enkapsulacji, jak to ma miejsce w C++ czy Javie, istnieją jednak mechanizmy pozwalające osiągnąć zbliżony efekt. Jednocześnie Python znacząco ułatwia introspekcję obiektów, tak więc właściwe użycie atrybutów obiektu pozostawia się programiście.

Dodatkowo każda funkcja, klasa i moduł mogą zostać opatrzone dokumentacją w kodzie źródłowym. Nie posiada ona wprawdzie rozbudowanych funkcji podobnych do javadoc, ale jest dostępna w czasie wykonania programu, a więc i w trybie interaktywnym.

Emulowanie typów, przeciążanie operatorów, wywoływanie jako funkcje Python pozwala dopasowywać własności danej klasy w szerokim zakresie. Implementując odpowiednie metody można sprawić, by obiekty danej klasy zachowywały się jak kolekcje, liczby, a nawet funkcje.

Przykład:

class Emulator: def __call__(self, x): print(f'Ten Emulator wywołano jako funkcję z parametrem x = {x}')

def __getitem__(self, key): return f'{key}-ty element w kontenerze klasy Emulator'

e = Emulator() e('abc') e(123) print(e['def']) print(e)

Uruchomienie powyższego kodu da następujący rezultat:

Ten Emulator wywołano jako funkcję z parametrem x = abc Ten Emulator wywołano jako funkcję z parametrem x = 123 def-ty element w kontenerze klasy Emulator 456-ty element w kontenerze klasy Emulator

Zmienna liczba argumentów funkcji Możliwe jest tworzenie funkcji ze zmienną liczbą argumentów, argumentami o wartościach domyślnych (podobnie jak w C++ lub C#), a także wywoływanie funkcji z użyciem argumentów nazwanych, z podaniem nazw parametrów.

Przykład:

def pokaz_argumenty(x, y, *args, **kwargs): print(f'{x=}, {y=}') print('Argumenty pozycyjne:') for arg in args: print(arg) print('Argumenty nazwane:') for klucz, wartosc in kwargs.items(): print(f'{klucz}={wartosc}')

pokaz_argumenty('abc', 123, 456, 'def', k=789, m='ghi')

Uruchomienie powyższego kodu da następujący rezultat:

x=abc, y=123 Argumenty pozycyjne: 456 def Argumenty nazwane: k=789 m=ghi

Składnia Czytanie kodu zajmuje wielokrotnie więcej czasu niż pisanie, a czytelny program można łatwiej zrozumieć i rozwijać. Python został zaprojektowany tak, by zapewnić możliwie dużą czytelność kodu źródłowego. Posiada prosty układ tekstu, używa wcięć lub angielskich słów tam, gdzie inne języki korzystają ze znaków interpunkcyjnych i posiada zdecydowanie mniej konstrukcji składniowych, niż wiele języków strukturalnych, takich jak C, Perl czy Pascal.

Dla czytelności, w Pythonie występują tylko dwa rodzaje pętli: for, w której iteracja odbywa się po elementach listy (jak w perlowym foreach), oraz while, która jest powtarzana, dopóki warunek logiczny jest spełniony. Python nie posiada składni for w stylu C, do...while, ani perlowego until, choć można uzyskać ich złożone odpowiedniki.

Od wersji 2.5 Python posiada operator warunkowy, analogiczny do warunek ? wartość1 : wartość2 znanego z C i Javy. Składnia: wartość1 if warunek else wartość2.

Struktura przez wcięcia Cechą wyróżniającą Pythona spośród innych języków jest stosowanie wcięć do wydzielania bloków kodu. Jest to cecha unikatowa wśród powszechnie stosowanych języków programowania, jako pierwsza rzucająca się w oczy programistom niepiszącym w Pythonie.