<

Pozycjonowanie stron www i SEO / SEM

To właśnie anchor textem tych linków, godne polecenia jest copywriting. Dzięki awiązaniu współpracy ze specjalistami serwisu.

* ilość fraz w TOP10: 2652

Opłatę w formie abonamentu miesięcy nawet o 1200 - 1500%, a w niektórych korzystając jedynie za miejsca na serwerze (wymagana obsługa MySQL oraz PHP).

Python

Python
Logo języka
Pojawienie się 1991
Paradygmat wieloparadygmatowy (obiektowy, imperatywny, funkcyjny)
Typowanie dynamiczne
Implementacje CPython, IronPython, Jython, PyPy
Pochodne Stackless Python
Aktualna wersja stabilna 3.2.1 (11 lipca 2011)
2.7.2 (12 lipca 2011)
Twórca Guido van Rossum
Licencja PSFL
Platforma sprzętowa wieloplatformowy
Platforma systemowa wieloplatformowy
nullwww.python.org/

Pythoninterpretowany, interaktywny język programowania zbudowany przez Guido van Rossuma w 1990. Python ma w pełni dynamiczny system typów oraz automatyczne zarządzanie pamięcią, jest zatem podobny do takich języków, jak Perl, Ruby, Scheme czy Tcl.

Python rozwijany jest jako projekt Open Source, zarządzany przez Python Software Foundation, będącą organizacją non-profit. Standardowa implementacja to tzw. CPython (pisany w C), ale są też inne, takie jak Jython (w Javie), IronPython (na platformę .NET) oraz PyPy (w Pythonie).

Spis treści

Rozwój języka

Pythona stworzył we wczesnych latach 90. Guido van Rossum – jako następcę języka ABC, stworzonego w Centrum voor Wiskunde en Informatica (CWI – Centrum Matematyki oraz Informatyki w Amsterdamie). Van Rossum jest podstawowym 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, wielokrotnie wyznacza się go przydomkiem "Benevolent Dictator for Life" (BDFL).

Nazwa języka nie pochodzi od zwierzęcia, jak da się przypuszczać. Python pochodzi od serialu komediowego emitowanego w latach siedemdziesiątych przez BBC. Ten serial nosi nazwę "Monty Python's Flying Circus" (Latający Cyrk Monty Pythona). Projektant potrzebował nazwy, która była krótka, unikalna oraz nieco tajemnicza. Na dodatek był fanem serialu, więc uważał, że taka nazwa dla języka była świetna[1].

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ł parę wersji Pythona, do 1.6 włącznie. W 2000 roku van Rossum oraz zespół pracujący nad rozwojem jądra Pythona przenieśli się do BeOpen.com by założyć zespół BeOpen PythonLabs. Pierwszą oraz jedyną wersją wydaną przez BeOpen.com był Python 2.0.

Po wydaniu wersji 1.6 oraz opuszczeniu CNRI przez van Rossuma, który zajął się programowaniem komercyjnym, uznano za wysoce pożądane, by Pythona da się było używać z oprogramowaniem dostępnym na licencji GPL. CNRI oraz 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 oraz 2.0.

Po wydaniu Pythona 2.0 przez BeOpen.com Guido van Rossum oraz 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 oraz beta), jest własnością Python Software Foundation (PSF), niedochodowej organizacji wzorowanej na Apache Software Foundation.

Filozofia Pythona

Python realizuje równocześnie parę 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 oraz 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 oraz – ich zdaniem – bardziej czytelnej. Mimo że analogicznie 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 - OpenERP.

Typy oraz struktury danych

W Pythonie wartości, a nie zmienne, posiadają typ – tak więc Python jest językiem z typami dynamicznymi, analogicznie jak Lisp, a w przeciwieństwie do Javy. Wszystkie wartości przekazywane są przez referencję.

W porównaniu z innymi językami z typami dynamicznymi Python sprawdza typy w umiarkowanym stopniu. Nie jest ani tak liberalny, jak Perl, ani tak restrykcyjny jak OCaml. 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 oraz 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[2]

Typ Opis Przykład
Python 3: str
Python 2: unicode
Napis w Unikodzie (niezmienny) Python 3: 'www.pozycjonowanie-bydgoszcz.tk' albo "www.pozycjonowanie-bydgoszcz.tk"

Python 2: u'www.pozycjonowanie-bydgoszcz.tk'lub u"www.pozycjonowanie-bydgoszcz.tk"
Python 3: bytes
Python 2: str
Napis w ASCII (niezmienny) Python 3: b'www.pozycjonowanie-bydgoszcz.tk' albo b"www.pozycjonowanie-bydgoszcz.tk"

Python 2: 'www.pozycjonowanie-bydgoszcz.tk' albo "www.pozycjonowanie-bydgoszcz.tk"
list Lista (zmienna zawartość oraz długość) [4.0, 'string', True]
tuple Krotka (niezmienna) (4.0, 'string', True)
set Zbiór wielorakich elementów (zmienny) Python 3: {4.0, 'string', True}
Python 2: set([4.0, 'string', True])
frozenset Zbiór wielorakich elementów (niezmienny) Python 3: frozenset({4.0, 'string', True})
Python 2: frozenset([4.0, 'string', True])
dict Słownik, czyli tablica asocjacyjna (zmienny). {'key1': 1.0, 3: False}
int (oraz long w Python 2) Liczba całkowita o dowolnej wartości 42
float Liczba zmiennoprzecinkowa 3.1415927
complex Liczba zespolona 3+2.7j
bool Prawda albo fałsz True
False
type(None) Nic (odpowiednik null) None

Kolekcje

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

Listy, krotki (ang. tuple) oraz napisy są sekwencjami, w związku z czym udostępniają pewną liczbę wspólnych operacji (np. w identyczny sposób da się 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 oraz podmiany), zaś krotki to tablice o stałej liczbie elementów (bez możliwości usuwania, dodawania oraz podmiany).

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.

Innymi typami są kolekcje nieuporządkowane: słowniki (ang. dict od dictionary – znane w innych językach jako odwzorowania (ang. map) albo tablice asocjacyjne) oraz zbiory (zmienny set oraz niezmienny 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 bywa lista ani zbiór zmienny (typu set) – może zaś być krotka bądź zbiór niezmienny (typu frozenset), o ile zawiera jedynie elementy niezmienne.

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 silnie zwią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 dopuszcza rozległą introspekcję typów oraz klas. Typy da się odczytywać oraz porównywać – podobnie, jak w Smalltalku, typy (opisy typów) też są typem. Atrybuty obiektu da się pobrać jako słownik.

W Pythonie nie ma enkapsulacji, jak to ma miejsce w C++ czy Javie, są jednak mechanizmy pozwalające osiągnąć zbliżony efekt. Równocześ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 oraz moduł potrafią zostać opatrzone dokumentacją w kodzie źródłowym. Nie ma ona wprawdzie rozbudowanych funkcji podobnych do javadoc, ale jest dostępna w czasie wykonania programu, a więc oraz w trybie interaktywnym.

Emulowanie typów, przeciążanie operatorów, wywoływanie jako funkcje

Python dopuszcza dopasowywać własności danej klasy w szerokim zakresie. Implementując odpowiednie metody da się sprawić, by obiekty danej klasy zachowywały się jak kolekcje, liczby, a nawet funkcje.

Przykład:

class Emulator:
 
    def __call__(self, x):
        print "Ten Emulator wywołano jako funkcję z parametrem x =", x
 
    def __getitem__(self, key):
        return str(key) + "-ty element w kontenerze klasy Emulator"
 
e = Emulator()
e('abc')
e(123)
print e'def'
print e456

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 wykonywanie funkcji ze zmienną liczbą argumentów, argumentami o wartościach domyślnych (podobnie jak w 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 "x=%s, y=%s" % (x, y)
    print "Argumenty pozycyjne:",
    for aa in args:
        print aa,
    print
    print "Argumenty nazwane:",
    for kk in kwargs:
        print "%s=%s" % (kk, kwargskk),
    print
 
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

Python stał się zaprojektowany tak, by zapewnić możliwie dużą czytelność kodu źródłowego. Posiada prosty układ graficzny, używa angielskich słów tam, gdzie inne języki korzystają ze znaków interpunkcyjnych oraz ma zdecydowanie mniej konstrukcji składniowych niż wiele języków strukturalnych, takich jak C, Perl czy Pascal.

Na przykład, w Pythonie są tylko dwa rodzaje pętli: for, w której iteracja przebiega się po elementach listy (jak w perlowym foreach), oraz while, która jest powtarzana dopóki warunek logiczny jest spełniony. Python nie ma złożonej składni for w stylu C, do...while, ani perlowego until, choć bez wątpienia da się uzyskać ich odpowiedniki. Podobnie, Python ma zaledwie zestaw instrukcji wyboru if...elif...else – niedobór jest złożonej instrukcji wyboru, czy instrukcji skoku znanych z innych języków.

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

Struktura przez wcięcia

Aspektem 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.

W językach programowania wywodzących strukturę blokową od Algola (niekoniecznie bezpośrednio) – np. Pascalu, C, czy Perlu – bloki kodu zaznaczane są klamrami albo słowami kluczowymi (C oraz Perl używają { }, Pascal używa begin oraz end). 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ęzyka ABC – zamiast interpunkcji czy słów kluczowych używa samych wcięć do zaznaczania bloków. Wyjaśnić to da się na prostym przykładzie zamieszczonym poniżej. Przedstawiona jest w nim funkcja licząca silnię w C oraz w Pythonie:

silnia w C:

int silnia(int x) {
    if (x == 0) return 1;
    else return x * silnia(x-1);
}

silnia w Pythonie:

def silnia(x):
    if x == 0:
        return 1
    else:
        return x * silnia(x-1)

Dla poniektórych programistów przyzwyczajonych do języków stylistycznie wzorowanych na Algolu, gdzie spacja nie ma znaczenia składniowego, może to być mylące. Spotyka się czasem niepochlebne porównanie do sztywnego systemu kolumnowego stosowanego w czasach fortranowych kart perforowanych.

Istotnie, w swoim czasie możliwość stosowania zapisu, w którym decydujące były zaledwie 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 oraz tak jest stosowana np. w C. 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 da się wymusić jednej dobrej konwencji (stąd też konflikty pomiędzy programistami, tzw. indentation wars). Nieprawidłowo wcięty kod bywa mylący, albowiem czytający go programista oraz kompilator potrafią go różnie zinterpretować.

Komentarze

Komentarze zaczynają się od znaku "#" oraz kończą z końcem wiersza. Komentarze wieloliniowe da się wstawiać w postaci wielowierszowych stringów (ograniczonych przez """ albo ''') bez żadnych działań (np. przypisań); stringi te nie są traktowane jako wyrażenia przez interpreter.

Wielowierszowy string umieszczony w pierwszej linii ciała funkcji albo 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ę z docstringów, dając w ten sposób ograniczoną wersję literate programming. Dokumentację da się przeglądać w trybie interaktywnym interpretera za pomocą funkcji help albo z poziomu wiersza poleceń za pomocą skryptu pydoc.

Programowanie funkcyjne

Inną cechą Pythona jest dostępność składni funkcyjnej. Jak da się oczekiwać, upraszcza to wydatnie obróbkę list oraz innych kolekcji. Jedną z takich konstrukcji jest tzw. lista składana (ang. list comprehension), przejęte z funkcjonalnego Haskella, jak w przedstawionym poniżej przykładzie obliczania pięciu pierwszych potęg dwójki:

liczby = 1, 2, 3, 4, 5
potegi_dwojki = 2**n for n in liczby

Za pomocą list składanych da się elegancko wyrazić algorytm quicksort, chociaż taka jego implementacja jest mało wydajna:

def qsort(L):
    if L == : return 
    return qsort(x for x in L1: if x< L0) + L0:1 + \
           qsort(x for x in L1: if x>=L0)

Wykorzystując programowanie funkcyjne da się skrócić implementację silni do jednolinijkowca bez uciekania się do rekurencji. W poniższym przykładzie użyto operacji redukcji listy. Przykład wykorzystuje ze składni Pythona z rodziny 2.7:

def silnia_f(n):
        return int(reduce(lambda x,y: x*y, range(2, n+1) or 1))

Lambda

Nieco mylące dla zwolenników programowania funkcyjnego bywa słowo kluczowe lambda. Bloki lambda potrafią zawierać zaledwie wyrażenia, nie instrukcje. Nie są one więc najbardziej ogólnym sposobem tworzenia funkcji. Zamiast tego da się zdefiniować oraz 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):

def zbuduj_sumator(x):
    def temp(y):
        print "%d + %d = %d" % (x, y, x+y)
    return temp

Funkcję tę da się zaimplementować także używając zagnieżdżonych wyrażeń lambda tak, jak to się robi w Scheme. Wymaga to obejścia ograniczeń pythonowej lambdy przez zdefiniowanie funkcji obudowującej instrukcję print:

def drukuj(obj):
    print obj
 
zbuduj_sumator = \
    lambda(x): lambda(y): \
        drukuj("%d + %d = %d" % (x, y, x+y))

Obydwa warianty funkcji zbuduj_sumator zachowują się identycznie: dla podanej liczby x zwracają funkcję, która dla podanej liczby y wydrukuje wyrażenie arytmetyczne. Choć pierwszy styl jest częściej spotykany, drugi bywa czytelniejszy dla programistów wyspecjalizowanych w programowaniu funkcyjnym.

Unikalne cechy pythonowych operatorów logicznych and oraz or dają jeszcze jedną unikalną możliwość programowania funkcyjnego. Przy wykorzystaniu tych dwóch operatorów da się w wyrażeniach lambda zaimplementować dowolne sterowanie przebiegiem [1]. Wykorzystuje się to zwykle tylko do stosunkowo prostych konstrukcji (patrz rozdział o operatorach logicznych).

Generatory

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

Przykład ze strony domowej Pythona:

 def generuj_calkowite(N):
     for oraz in xrange(N):
         yield i

Można teraz użyć tego generatora:

 for oraz in generuj_calkowite(N):
     print i

Przed wykonaniem drugiego fragmentu kodu trzeba bez wątpienia zdefiniować zmienną N.

Definicja generatora jest podobne definicję funkcji, ale zamiast słowa kluczowego return używa się yield. Jednakowoż generator jest obiektem przechowującym stan, mogącym wielokrotnie wchodzić do oraz opuszczać ten sam dynamiczny zakres. Wywołanie generatora bywa użyte zamiast listy albo innej struktury, po której elementach będziemy iterować. Za każdym razem, kiedy pętla for w powyższym przykładzie potrzebuje następnego elementu, wywoływany jest generator, który daje następny element.

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

 gen_kwadratow = (i**2 for oraz in range(5))

jest odpowiednikiem:

 def gen_kwadratow():
     for oraz in range(5):
         yield i**2

Operatory logiczne

W Pythonie jako fałsz logiczny traktuje się:

  • liczbę zero (0, 0.0, 0j itp.)
  • False
  • None (null)
  • puste kolekcje ([], (), {}, set() itp.)
  • puste napisy
  • w Pythonie 2 – obiekty posiadające metodę __nonzero__(), jeśli zwraca ona False albo 0
  • w Pythonie 3 – obiekty posiadające metodę __bool__(), jeśli zwraca ona False

Wszystko inne jest prawdą logiczną.

Operatory and oraz or zwracają wartość ostatnio obliczonego wyrażenia, np. "x==5 and 3" zwróci 3. W Pythonie wielokrotnie pisze się instrukcje w rodzaju print p or q by wykorzystać tę cechę.

Wartości logiczne zwracane przez operatory porównania (==, >, !=, is itp.), operator zawierania (in) oraz operator negacji (not) reprezentowane są przez obiekty True oraz False. Gdyby więc w powyższym przykładzie kolejność wyrażeń zamienić na "3 and x==5", zwrócona zostałaby wartość True, albowiem tak ewaluowane jest x==5. Operatory porównania da się łączyć, np. "-1 < x < 0" zwróci True dla x z przedziału (-1, 0) – tak, jak w zapisie matematycznym, a inaczej niż np. w C++.

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

Obsługa wyjątków

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

Styl programowania w Pythonie zaleca stosowanie wyjątków zawsze, kiedy może pojawić się błąd wykonania. Dla przykładu 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.

Dekoratory

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ć:

class C:
    def metoda(obj):
        pass
    metoda = staticmethod(metoda)

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

class C:
    @staticmethod
    def metoda(obj):
        pass

Ogólnie zapis:

@dekorator
def funkcja():
    pass

jest równoważny zapisowi:

def funkcja():
    pass
funkcja = dekorator(funkcja)

Biblioteka standardowa

Python ma 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 da się uzupełniać modułami pisanymi w C albo w Pythonie. Biblioteka standardowa jest szczególnie dobrze dostosowana do tworzenia aplikacji sieciowych, jako że obsługuje znaczną liczbę standardowych formatów oraz protokołów (np. MIME, HTTP). Dołączone są także moduły do tworzenia GUI (na bazie Tcl/Tk), obróbki wyrażeń regularnych, nawet prosty serwer WWW z obsługą CGI.

Większa cząstka biblioteki standardowej dostępna jest na wszystkich platformach, dzięki czemu nawet duże aplikacje potrafią wielokrotnie być uruchamiane bez konieczności modyfikacji na Uniksach, pod Windows, na Macintoshu oraz innych platformach. Przeciwnie, niż np. dla Javy, nie ogranicza się zestawu dostępnych funkcji do części wspólnej dla wielorakich platform; np. na uniksach dostępna jest funkcja fork(), choć nie ma jej np. w Windows.

Standardy dla bibliotek "zewnętrznych"

Podobnie, jak w wypadku innych języków, opracowany stał się szereg standardów tworzenia API pomocniczego, np. sterowników relacyjnych baz danych. Z uwagi 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 przypadku JDBC. Twórca biblioteki zewnętrznej musi po prostu zapewnić, by zbudowane przez niego moduły, funkcje oraz klasy posiadały odpowiednie atrybuty.

Inne cechy

Tak jak Lisp, interpreter Pythona ma także tryb interaktywny, w którym wyrażenia da się wprowadzać z terminala, otrzymując natychmiast wyniki. Zgodnie z założeniem twórców Pythona ułatwiać ma to naukę programowania, albowiem dopuszcza wypróbowywać fragmenty kodu ze skutkiem natychmiastowym. Standardowy shell nie jest jednakże zbyt wygodny ani nie ma zbyt wielu funkcji (brak np. uzupełniania TAB-em) – braków tych jest pozbawiony IPython, będący częścią pakietu SciPy.

Wraz z Pythonem rozpowszechniana jest także biblioteka do testów jednostkowych, pozwalająca na wykonywanie wyczerpujących testów poprawności tworzonego oprogramowania.

Sprawdź też

Wikibooks-logo.svg
Sprawdź publikację na Wikibooks:
Zanurkuj w Pythonie
Commons in image icon.svg

Linki zewnętrzne

Przypisy

  1. Python Software Foundation: Whetting Your Appetite — Python v2.7.2 documentation (ang.). [dostęp 2011-08-03].
  2. Built-in Types

Polteknik LTD | www.trasa.tron.kolobrzeg.pl | katalog stron internetowych | organizacja imprez Ursynów | wydajne i oszczędne ogrzewanie Twojego domu