Movatterモバイル変換


[0]ホーム

URL:


Przejdź do zawartości
Wikipediawolna encyklopedia
Szukaj

Python

Z Wikipedii, wolnej encyklopedii
Zobacz też:Python (zwierzęta),Pyton.
Python
Logo języka Python
Logo języka
Pojawienie się

20 lutego1991[1]

Paradygmat

wieloparadygmatowy (obiektowy,imperatywny,funkcyjny)

Typowanie

dynamiczne

Implementacje

CPython,IronPython,Jython,PyPy

Pochodne

Stackless Python,Cython

Aktualnawersja stabilna

3.14.3
(3 lutego 2026) [±]

Aktualnawersja testowa

3.15.0 alpha 5
(14 stycznia 2026) [±]

Twórca

Guido van Rossum

Licencja

Python Software Foundation License[2]

Platforma sprzętowa

wieloplatformowy

Platforma systemowa

wieloplatformowy

Książki w Wikibooks
Multimedia w Wikimedia Commons
Strona internetowa

Pythonjęzyk programowaniawysokiego poziomu ogólnego przeznaczenia[3]. Posiada rozbudowany pakietbibliotek standardowych[4], którego ideą przewodnią jest czytelność i klarownośćkodu źródłowego. Jego składnia cechuje się przejrzystością i zwięzłością[5][6].

Python wspiera różneparadygmaty programowania:obiektowy,imperatywny oraz w mniejszym stopniufunkcyjny. Posiada w pełnidynamicznysystem typów i automatycznezarządzanie pamięcią, będąc w tym podobnym do językówPerl,Ruby,Scheme czyTcl. Podobnie jak innejęzyki dynamiczne jest często używany jakojęzyk skryptowy.Interpretery Pythona są dostępne na wielesystemów operacyjnych.

Python rozwijany jest jako projektOpen Source zarządzany przezPython Software Foundation, która jestorganizacją non-profit[7]. Standardowąimplementacją języka jestCPython (napisany wC), ale istnieją też inne, np.Jython (napisany wJavie), CLPython napisany wCommon Lisp,IronPython (na platformę.NET) iPyPy (napisany w Pythonie, zob.bootstrap).

Rozwój języka

[edytuj |edytuj kod]
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 wCentrum voor Wiskunde en Informatica(inne języki) (CWI – Centrum Matematyki i Informatyki wAmsterdamie). 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)[8].

Nazwa języka nie pochodzi od zwierzęcia, lecz od serialu komediowego emitowanego w latach siedemdziesiątych przezBBC – „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ą[9].

Wersja 1.2 była ostatnią wydaną przez CWI. Od 1995 roku Van Rossum kontynuował pracę nad Pythonem wCorporation for National Research Initiatives (CNRI) wReston wWirginii, 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ół BeOpenPythonLabs. 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 nalicencji GPL. CNRI iFree 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 doDigital Creations. Caławł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 naApache Software Foundation.

Filozofia Pythona

[edytuj |edytuj kod]

Python realizuje jednocześnie kilka paradygmatów. Podobnie doC++, a w przeciwieństwie doSmalltalka nie wymusza jednego stylu programowania, pozwalając na stosowanie różnych. W Pythonie możliwe jestprogramowanie obiektowe,programowanie strukturalne iprogramowanie 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 doPerla, 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 jakojęzyk skryptowy, wykorzystuje się go do tworzenia dużych projektów jakserwer aplikacjiZope, system wymiany plikówMojo Nation, czy nawet oprogramowanie klasy ERP –Odoo.

Typy i struktury danych

[edytuj |edytuj kod]

W Pythoniewartości, a nie zmienne, posiadają typ – tak więc Python jest językiem z typami dynamicznymi, podobnie jakLisp, a w przeciwieństwie doJavy. W przeciwieństwie do wielu języków, wartości nie są przekazywane ani przez wartość, ani przez referencję, ale przez przypisanie[10].

W porównaniu z innymi językami programowania Python jest dość silnie typowany. Nie jest ani tak liberalny jak Perl, ani tak restrykcyjny jakOCaml. 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ą typulong 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[11]

[edytuj |edytuj kod]
TypOpisPrzykład
strCiąg znaków (niezmienny)'Wikipedia',"Wikipedia" lub

"""Wielolinijkowytekst"""

bytesSekwencja bajtów (niezmienna)b'Wikipedia' lubb"Wikipedia"
listLista (zmienna, zawartość, długość)[4.0, 'string', True]
tupleKrotka (niezmienna)(4.0, 'string', True)
setZbiór (zmienny){4.0, 'string', True}
frozensetZbiór (niezmienny)frozenset({4.0, 'string', True})
dictSłownik, czyli tablica asocjacyjna (zmienny).{'key1': 1.0, 3: False}
intLiczba całkowita o dowolnej wartości42
floatLiczba zmiennoprzecinkowa3.1415927
complexLiczba zespolona3+2.7j
boolWartość logiczna (prawda lub fałsz)True
False
NoneTypeObiekt reprezentujący brak wartości, będący odpowiednikiem wartościnull w innych językachNone

Kolekcje

[edytuj |edytuj kod]

Część wyżej wymienionych typów tokolekcje.

Listy,krotki (ang.tuple) 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)[11].

Innymi typami są kolekcje nieuporządkowane:słowniki (ang.dictionary, typdict) – znane w innych językach jako odwzorowania (ang.map) lub tablice asocjacyjne orazzbiory (ang.set) reprezentowane przez dwa typy: zbioru zmiennegoset i niezmiennegofrozenset. 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 (typuset) – może zaś być krotka bądź zbiór niezmienny (typufrozenset), 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[11].

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

[edytuj |edytuj kod]

System typów w Pythonie jest silnie powiązany z systemem klas. Chociaż typy wbudowane nie są właściwie klasami, klasa może dziedziczyć z dowolnego typu. Można więc dziedziczyć klasy z napisów czy słowników, a nawet z liczb całkowitych. Ponadto możliwe jest dziedziczenie wielokrotne.

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

W Pythonienie maenkapsulacji, 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ą wkodzie źródłowym. Nie posiada ona wprawdzie rozbudowanych funkcji podobnych dojavadoc, 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

[edytuj |edytuj kod]

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:

classEmulator:def__call__(self,x):print(f'Ten Emulator wywołano jako funkcję z parametrem x ={x}')def__getitem__(self,key):returnf'{key}-ty element w kontenerze klasy Emulator'e=Emulator()e('abc')e(123)print(e['def'])print(e[456])

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

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

Zmienna liczba argumentów funkcji

[edytuj |edytuj kod]

Możliwe jest tworzenie funkcji zezmienną liczbą argumentów,argumentami o wartościach domyślnych (podobnie jak w C++ lub C#), a także wywoływanie funkcji z użyciemargumentów nazwanych, z podaniem nazwparametrów.

Przykład:

defpokaz_argumenty(x,y,*args,**kwargs):print(f'{x=},{y=}')print('Argumenty pozycyjne:')forarginargs:print(arg)print('Argumenty nazwane:')forklucz,wartoscinkwargs.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=123Argumenty pozycyjne:456defArgumenty nazwane:k=789m=ghi

Składnia

[edytuj |edytuj kod]

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 jakC,Perl czyPascal.

Dla czytelności, w Pythonie występują tylko dwa rodzaje pętli:for, w którejiteracja odbywa się po elementach listy (jak wperlowymforeach), orazwhile, która jest powtarzana, dopóki warunek logiczny jest spełniony. Python nie posiada składnifor w styluC,do...while, ani perlowegountil, choć można uzyskać ich złożone odpowiedniki.

Od wersji 2.5 Python posiadaoperator warunkowy, analogiczny dowarunek ? wartość1 : wartość2 znanego zC iJavy. Składnia:wartość1 if warunek else wartość2.

Struktura przez wcięcia

[edytuj |edytuj kod]

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 oczyprogramistom niepiszącym w Pythonie.

W językach programowania wywodzących strukturę blokową odAlgola (niekoniecznie bezpośrednio) – np.Pascalu,C, czyPerlu – bloki kodu zaznaczane są klamrami lub słowami kluczowymi (C i Perl używają{ }, Pascal używabegin iend). Jednakże we wszystkich tych językach programiści tradycyjnie stosują wcięcia, by wyróżnić bloki w otaczającym kodzie.

Natomiast Python dziedziczy cechę mniej znanego językaABC – zamiast interpunkcji czy słów kluczowych używa samych wcięć do zaznaczania bloków. Wyjaśnić to można na prostym przykładzie zamieszczonym poniżej. Przedstawiona jest w nim funkcja licząca silnię wC i w Pythonie:

silnia w C (zapisana bez wcięć):

intsilnia(intx){if(x==0)return1;elsereturnx*silnia(x-1);}

silnia w Pythonie:

defsilnia(x):ifx==0:return1else:returnx*silnia(x-1)

Dla niektórych programistów przyzwyczajonych do języków stylistycznie wzorowanych naAlgolu, gdzie spacja nie ma znaczenia składniowego, może to być mylące. Spotyka się czasem niepochlebne porównanie do sztywnego systemu kolumnowegokart perforowanych stosowanego w czasachfortranowych.

Istotnie, w swoim czasie możliwość stosowania zapisu, w którym decydujące były jedynie symbole, była dużym postępem. Jednak dla programistów piszących w Pythonie stosowanie składniowo znaczących wcięć jest po prostu przedłużeniem konwencji, która i tak jest stosowana np. wC. Zwolennicy tego języka zwracają także uwagę na wadę „swobodnej” składni, polegającą na tym, że skoro wcięcia kodu są ignorowane, nie można wymusić jednej dobrej konwencji (stąd też konflikty między programistami, dotyczące stosowaniaspacji (i różnej ich liczby) lubtabulatorów, tzw.indentation wars). Nieprawidłowo wcięty kod może być mylący, gdyż czytający go programista ikompilator mogą go różnie zinterpretować.

Komentarze

[edytuj |edytuj kod]

Komentarze zaczynają się od znaku „#” i kończą z końcem wiersza. Komentarze wieloliniowe można wstawiać w postaci wielowierszowychstringów (ograniczonych przez""" lub''') bez żadnych działań (np. przypisań);stringi te nie są traktowane jako wyrażenia przez interpreter.

Wielowierszowystring umieszczony w pierwszej linii ciała funkcji lub klasy albo na początku modułu, traktowany jest jako tzw.docstring (napis dokumentacyjny) dla tegoż obiektu. System dokumentacji Pythona może automatycznie tworzyć sformatowaną dokumentację zdocstringów, dając w ten sposób ograniczoną wersjęliterate programming. Dokumentację można przeglądać w trybie interaktywnym interpretera za pomocą funkcjihelp lub z poziomuwiersza poleceń za pomocą skryptupydoc(inne języki).

Programowanie funkcyjne

[edytuj |edytuj kod]

Inną cechą Pythona jest dostępność składni funkcyjnej. Jak można oczekiwać, upraszcza to znacznie obróbkę list i innych kolekcji. Jedną z takich konstrukcji jestlista składana (ang.list comprehension), przejęte z funkcjonalnegoHaskella, jak w przedstawionym poniżej przykładzie obliczania pięciu pierwszychpotęg dwójki:

liczby=[1,2,3,4,5]potegi_dwojki=[2**nforninliczby]

Za pomocą list składanych można wyrazić algorytmquicksort,chociaż taka jego implementacja jest mało wydajna:

defqsort(L):ifL==[]:return[]return(qsort([xforxinL[1:]ifx<L[0]])+L[0:1]+qsort([xforxinL[1:]ifx>=L[0]]))

Wykorzystującprogramowanie funkcyjne, można skrócić implementacjęsilni do jednolinijkowca bez uciekania się dorekurencji. W poniższym przykładzie użyto operacji redukcji listy:

fromfunctoolsimportreducedefsilnia_f(n):returnreduce(lambdax,y:x*y,range(2,n+1),1)

Lambda

[edytuj |edytuj kod]

Nieco mylące dla zwolenników programowania funkcyjnego może być słowo kluczowelambda. Blokilambda mogą zawierać jedynie wyrażenia, nie instrukcje. Nie są one więc najbardziej ogólnym sposobem tworzenia funkcji. Zamiast tego można zdefiniować i zwrócić funkcję, używając nazwy w zasięgu lokalnym, jak w poniższym przykładzie prostej funkcji generującej inną funkcję (ang.curry):

defzbuduj_sumator(x):deftemp(y):print(f"{x} +{y} ={x+y}")returntemp

Funkcję tę można zaimplementować także, używając zagnieżdżonych wyrażeńlambda tak, jak to się robi wScheme:

zbuduj_sumator=lambdax:lambday:print(f"{x} +{y} ={x+y}")

Oba warianty funkcjizbuduj_sumator zachowują się identycznie: dla podanej liczbyx zwracają funkcję, która dla podanej liczbyy wydrukuje wyrażenie arytmetyczne. Choć pierwszy styl jest częściej spotykany, drugi może być czytelniejszy dla programistów wyspecjalizowanych w programowaniu funkcyjnym.

Unikalne cechy pythonowych operatorów logicznychand ior dają jeszcze jedną unikalną możliwość programowania funkcyjnego. Przy wykorzystaniu tych dwóch operatorów można w wyrażeniachlambda zaimplementować dowolne sterowanie przebiegiem[1]. Wykorzystuje się to zwykle tylko do stosunkowo prostych konstrukcji (patrz rozdział ooperatorach logicznych).

Generatory

[edytuj |edytuj kod]

Generatory są w Pythonie mechanizmemleniwej ewaluacji funkcji, która w przeciwnym razie musiałaby zwracać obciążającą pamięć lub kosztowną w obliczaniu listę. Stosowanie generatorów jest podobne do strumieni wScheme:

defgeneruj_calkowite(n):foriinrange(n):yieldi

Można teraz użyć tego generatora:

foriingeneruj_calkowite(7):printi

Przed wykonaniem drugiego fragmentu kodu należy zdefiniować zmiennąN.

Definicja generatora przypomina definicję funkcji, ale zamiast słowa kluczowegoreturn używa sięyield. Jednakowoż generator jest obiektem przechowującym stan, mogącym wielokrotnie wchodzić do i opuszczać ten sam dynamiczny zakres. Wywołanie generatora może być użyte zamiast listy lub innej struktury, po której elementach będziemy iterować. Za każdym razem, gdy pętlafor w powyższym przykładzie potrzebuje następnego elementu, wywoływany jest generator, który daje następny element.

W wersji 2.4 dodanowyrażenia generatorowe (ang.generator expressions), analogiczne do listy składanej. Zapis:

gen_kwadratow=(i**2foriinrange(5))

jest odpowiednikiem:

defgen_kwadratow():foriinrange(5):yieldi**2

Operatory logiczne

[edytuj |edytuj kod]

W Pythonie jako fałsz logiczny traktuje się:

  • liczbę zero (0,0.0,0j itp.)
  • False
  • None (null)
  • puste kolekcje ([],(),{},set() itp.)
  • puste napisy ("","""""")
  • obiekty posiadające metodę__bool__(), jeśli zwraca onaFalse

Wszystko inne jest prawdą logiczną.

Operatoryand ior zwracają wartość ostatnio obliczonego wyrażenia, np. „x==5 or 3” zwróci 3. W Pythonie często pisze się instrukcje w rodzajuprint(p or q), by wykorzystać tę cechę.

Wartości logiczne zwracane przez operatory porównania (==,>,!=,is itp.), operator zawierania (in) oraz operatornegacji (not) reprezentowane są przez obiektyTrue iFalse. Gdyby więc w powyższym przykładzie kolejność wyrażeń zamienić na „3 and x==5”, zwrócona zostałaby wartośćTrue, gdyż tak ewaluowane jestx==5. Operatory porównania można łączyć, np. „-1 < x < 0” zwróciTrue dlax z przedziału (-1, 0) – tak, jak w zapisie matematycznym, a inaczej niż np. wC++.

Od Pythona 2.3True iFalse są wbudowanymi obiektami typubool. Wcześniej do identyfikatorów tych przypisane były obiekty liczb całkowitych, odpowiednio 1 i 0.

Obsługa wyjątków

[edytuj |edytuj kod]

Python udostępnia i intensywnie wykorzystuje obsługęwyjątków jako sposób wykrywania błędów.

Styl programowania w Pythonie zaleca stosowanie wyjątków zawsze, gdy może pojawić się błąd wykonania. Na przykład nie testuje się praw dostępu do pliku przed jego otwarciem, lecz po prostu próbuje się go otworzyć, przechwytując wyjątek w razie braku dostępu.

Obsługa wyjątków jest możliwa za pomocą wyrażeniatry-except[12][13].

Poniżej znajduje się kod, który oczekuje od użytkownika podania liczby. Jeśli zostanie podana inna wartość (np. „xyz”), to kod wypisuje informację o błędzie i prosi o podanie nowej wartości.

whileTrue:try:x=int(input("Podaj liczbe: "))breakexceptValueError:print("Niepoprawna wartosc")

Wyrażenietry-except działa w następujący sposób:

  • najpierw wykonywany jest kod znajdujący się w blokutry.
  • jeśli nie wystąpi wyjątek, to kod znajdujący się w blokuexcept zostanie pominięty.
  • jeśli w czasie wykonywania kodu z blokutry pojawi się wyjątek, to pozostałe operacje z tego bloku zostaną pominięte.
    • jeśli typ wyjątku odpowiada określonemu w klauzuliexcept (na podstawie powyższego przykładu:ValueError), to wykonywany jest kod określony w blokuexcept.
    • jeśli pojawi się wyjątek, który nie został określony w klauzuliexcept, to jest on przekazywany do nadrzędnych wyrażeńtry. W przypadku kiedy żaden z blokówtry-except dostępnych w programie nie przechwytuje danego wyjątku, to jest on nazywany nieobsłużonym wyjątkiem (ang.unhandled exception). W takiej sytuacji wykonanie programu zakończy się z błędem.

Dekoratory

[edytuj |edytuj kod]

W wersji 2.4 wprowadzono nowy element składni – notacjędekoratora. Przykład: w starszych wersjach Pythona, by uzyskaćmetodę statyczną klasy, należało napisać:

classC:defmetoda(obj):passmetoda=staticmethod(metoda)

Notacja dekoratora pozwala, bardziej czytelnie, umieścić informację o konwersji (dekoracji) przed definicją funkcji:

classC:@staticmethoddefmetoda(obj):pass

Ogólnie zapis:

@dekoratordeffunkcja():pass

jest równoważny zapisowi:

deffunkcja():passfunkcja=dekorator(funkcja)

Biblioteka standardowa

[edytuj |edytuj kod]

Python posiada rozbudowanąbibliotekę standardową, umożliwiającą jego stosowanie do wielu zadań. Twórcy języka stosują politykę tzw.Batteries Included, czyli dostarczenia wraz z pakietem instalacyjnym możliwie dużej liczby narzędzi. Moduły standardowej biblioteki można uzupełniać modułami pisanymi w C lub w Pythonie. Biblioteka standardowa jest szczególnie dobrze dostosowana do tworzenia aplikacji sieciowych, jako że obsługuje znaczną liczbę standardowych formatów i protokołów (np.MIME,HTTP). Dołączone są także moduły do tworzeniaGUI (na bazieTcl/Tk), obróbkiwyrażeń regularnych, nawet prosty serwerWWW z obsługąCGI.

Większa część biblioteki standardowej dostępna jest na wszystkich platformach, dzięki czemu nawet duże aplikacje mogą często być uruchamiane bez konieczności modyfikacji naUniksach, podWindows, naMacintoshu i innych platformach. Przeciwnie, niż np. dlaJavy, nie ogranicza się zestawu dostępnych funkcji do części wspólnej dla różnych platform; np. nauniksach dostępna jest funkcjaos.fork(), choć nie ma jej np. w Windows[14].

Standardy dla bibliotek „zewnętrznych”

[edytuj |edytuj kod]

Podobnie, jak w wypadku innych języków, opracowany został szereg standardów tworzeniaAPI pomocniczego, np. sterownikówrelacyjnych baz danych. Ze względu na w pełni dynamiczny system typów nie ma konieczności dołączania do biblioteki standardowej „interfejsu bazowego”, jak to ma miejsce np. w przypadkuJDBC. Twórca biblioteki zewnętrznej musi po prostu zapewnić, by stworzone przez niego moduły, funkcje i klasy posiadały odpowiednie atrybuty.

Inne cechy

[edytuj |edytuj kod]
PythonIDLE (Integrated Development and Learning Environment) działające na systemieUbuntu

Interpreter Pythona posiada takżetryb interaktywny, w którym wyrażenia można wprowadzać z terminala, otrzymując natychmiast wyniki. Zgodnie z założeniem twórców Pythona ułatwiać ma to naukę programowania, gdyż pozwala wypróbowywać fragmenty kodu ze skutkiem natychmiastowym. Standardowy shell nie jest jednakże zbyt wygodny ani nie posiada zbyt wielu funkcji (brak np. uzupełniania TAB-em) – braków tych jest pozbawionyIPython, będący częścią pakietuSciPy.

Wraz z Pythonem rozpowszechniana jest także bibliotekaunittest dotestów jednostkowych, pozwalająca na tworzenie wyczerpujących testów poprawności tworzonego oprogramowania[15].

Zobacz też

[edytuj |edytuj kod]
Zobacz publikację
Zanurkuj w Pythonie w Wikibooks
Zobacz multimedia związane z tematem:Python

Przypisy

[edytuj |edytuj kod]
  1. Guido VanG.V. Rossum Guido VanG.V.,The History of Python: A Brief Timeline of Python [online], 20 stycznia 2009 [dostęp 2025-08-16] .
  2. History and License. [w:]Python 3.8.1 documentation [on-line]. [dostęp 2020-01-03]. (ang.).
  3. Dave Kuhlman: A Python Book: Beginning Python, Advanced Python, and Python Exercises. [dostęp 2012-07-02]. [zarchiwizowane ztego adresu (2012-06-23)]. Cytat: Python is a high-level general purpose programming language (ang.).
  4. About Python. Python Software Foundation. [dostęp 2012-04-24]. (ang.).
  5. Mark Summerfield: Rapid GUI Programming with Python and Qt. Cytat: If you are new to Python: Welcome! You are about to discover a language that is clear to read and write, and that is concise without being cryptic.. (ang.).
  6. Mark Summerfield: Rapid GUI Programming with Python and Qt. Cytat: Python is a very expressive language, which means that we can usually write far fewer lines of Python code than would be required for an equivalent application written in, say, C++ or Java.. (ang.).
  7. About the Python Software Foundation [online], Python.org [dostęp 2025-09-28] (ang.).
  8. Origin of BDFL [online], www.artima.com [dostęp 2025-09-28] .
  9. Python Software Foundation: Whetting Your Appetite – Python v2.7.2 documentation. [dostęp 2011-08-03]. (ang.).
  10. Is Python pass-by-reference or pass-by-value? [online], Robert Heaton [dostęp 2021-03-27] (ang.).
  11. abcBuilt-in Types.
  12. 8. Errors and Exceptions [online], Python documentation [dostęp 2025-10-02] (ang.).
  13. Python Try Except [online], GeeksforGeeks, 21 czerwca 2017 [dostęp 2025-10-02] (ang.).
  14. Python Software Foundation: 16.1. os – Miscellaneous operating system interfaces. [dostęp 2017-03-07]. Cytat: os.fork() Fork a child process. [szczegółowy opis funkcji] Availability: Unix (ang.).
  15. Python Software Foundation: 26.4. unittest – Unit testing framework. [dostęp 2017-03-07]. Cytat: The unittest module provides a rich set of tools for constructing and running tests. (ang.).

Linki zewnętrzne

[edytuj |edytuj kod]
Python
Implementacje
IDE
Języki programowania
1GL
2GL/
Język drugiej generacji/
Asembler
3GL /
Język trzeciej generacji
wieloparadygmatowe
proceduralne
istrukturalne
historyczne
inne
obiektowe
funkcyjne
edukacyjne
4GL/
Język czwartej generacji/
Język dziedzinowy
Języki zapytań do baz danych
Generatory raportów / stron
Przetwarzanie danych, analiza i raportowanie
5GL/Logiczne
Ezoteryczne
Inne
Źródło: „https://pl.wikipedia.org/w/index.php?title=Python&oldid=78937633
Kategorie:
Ukryte kategorie:

[8]ページ先頭

©2009-2026 Movatter.jp