Historia języka Python sięga początku lat 90. Od tego czasu zdobył on sobie ogromną popularność i jest stosowany w wielu rozwiązaniach. Jego wydajność została doceniona również przez firmę Google podczas tworzenia platformy Google App Engine. Python w przeciwieństwie do wielu innych języków nie wymusza jednego sposobu programowania. Używając go, możesz programować obiektowo, strukturalnie i funkcjonalnie. Jeżeli do tego dodać automatyczny system zarządzania pamięcią oraz dynamicznie sprawdzane typy, rozwiązanie to nabiera kuszących rumieńców.
Dzięki tej książce dowiesz się, jak przygotować swoje środowisko pracy i rozpocząć przygodę z językiem Python. Autor zagwarantuje Ci, że będzie to kształcąca przygoda. Na konkretnych, praktycznych projektach pokaże Ci, jak wykorzystać potencjał drzemiący w tym języku. Wśród przykładów znajdziesz opis takich zagadnień, jak wykonywanie migawek katalogów i plików, projektowanie katalogu filmów i systemu testującego wydajność WWW czy też tworzenie systemu gromadzenia opinii. Najważniejsze jest jednak to, że każde z tych rozwiązań możesz bez trudu zaadaptować do potrzeb Twojego projektu. Książka ta stanowi świetną lekturę zarówno dla zaawansowanych programistów Pythona, jak i tych, którzy chcą dopiero rozpocząć z nim pracę!
Python
4 październik, 2006 - 14:51 — Manveru
Python jest współczesnym językiem programowania, którego znaczenie i wartość rośnie dzisiaj bardzo szybko. Cechą wyróżniającą Python na tle innych języków jest składnia języka ściśle związana z formatowaniem - dzięki temu kod jest bardziej czytelny, a listingi programów krótsze. Dodatkowe zalety to dynamiczne typy danych, programowanie funkcyjne, automatyczne zarządzanie pamięcią i możliwość praktycznego programowania w locie, dzięki dostępności linii poleceń interpretera Python.
Historia
Na początku lat 90 Guido van Rossum w Centrum Matematyki i Informatyki (CWI) w Amsterdamie stworzył następcę języka ABC o nazwie Python. Następnie ogromny wkład w jego rozwój miało bardzo dużo różnych osób. Wersja 1.2 była ostatnią wydaną przez (CWI. Od 1995 roku pracę nad Pythonem van Rossum kontynuował w CNRI w Reston (Wirginia), gdzie wydał kilka wersji Pythona do 1.6 włącznie.
W roku 2000 van Rossum wraz z zespołem przenieśli się do BeOpen.com (już nie istnieje), gdzie wydali jedną jedyną wersję 2.0 - pierwszy krok do sukcesu.
Po wydaniu wersji 1.6 Free Software Foundation podjeło kroki w kierunku modyfikacji licencji Pythona, by spełnić oczekiwania społeczności. Wersja 1.6.1 poza kilkoma drobnymi modyfikacjami, cechowała się nową licencją, dzięki której późniejsze wersje były zgodne z GPL. Python 2.1 pochodził zarówno od wersji 1.6.1, jak wersji 2.0 uwolnionej przez van Rossuma.
Cała własność intelektualna dodana od wersji 2.1 jest własnością Python Software Foundation (wzorowanej na Apache Software Foundation).
Filozofia Pyhona
Python nie wymusza stylu programowania jak SmallTalk. W Pythonie możemy programować obiektowo, strukturalnie i funkcyjnie. Pyhton jest pod pewnymi względami podobny do Perl'a, jednakże wyróżnia go prostsza składnia, czytelna nawet dla osób nie znających języka.
Zmienne Pyhona mają dynamiczne typy, wszystkie wartości przekazywane są przez referencję - w praktyce każda zmienna jest "wskaźnikiem" do pewnego elementu w pamięci zarządzanej dynamicznie. Posiadanie dwóch kopii tej samej wartości wymaga dokonania operacji kopiowania tej pamięci, o czym należy pamiętać. W praktyce ten mechanizm zmniejsza zużycie pamięci przez programy i zwiększa ich wydajność.
Składnia
Wyróżnikiem Pythona na tle innych języków jest jego składnia oparta na wydzielaniu bloków przez wcięcia. Brak jest nawiasów klamrowych, czy słów "begin" i "end". Krytycy Pythona uważają to za cofnięcie się do czasów kart perforowanych, gdzie układ "kodu" był istotny dla prawidłowego programowania. Zwolennicy zaś twierdzą, że profesjonalne programowanie i tak narzuca standard kodowania, przez co Python z automatu w tej kwestii jest pomocny.
Implementacja silni (mało wydajna) wygląda w Pythonie tak:
def silnia(x):
if x == 0:
return 1
else:
return x * silnia(x-1)
Komentarze w Pythonie rozpoczynają się znakiem "#" i obowiązują do końca linii. Komentarze wielowierszowe ograniczone są znakami """ lub ''' bez żadnych operacji. Ustawione w pierwszej linii klasy lub funkcji oraz na początku modułu stanowią element docstring, będący częścią automatycznego systemu dokumentacji pydoc.
Programowanie funkcyjne
Do kolejnych ciekawych cech należy możliwość programowania funkcyjnego, która interesuje pewną grupę przywiązaną do tego paradygmatu. Istnieje też w Pythonie operator lambda, który wspomaga programowanie funkcyjne, ale może wykorzystywać tylko wyrażenia. Nie jest dopuszczalne stosowanie instrukcji. To podejście wymaga pewnej gimnastyki.
Nie będę się rozwodził nad ta możliwością, gdyż programowanie funkcyjne jest dla mnie teorią - w praktyce zetknąłem się z nią tylko w trakcie krótkiego spotkania z OCamle'em (o którym być może napisz? równie?).
Generatory
Python posiada wbudowany mechanizm generatorów, które s? rozbudowanym mechanizmem leniwej ewaluacji. Konstrukcja generatora przypomina funkcję, jednakże zamiast return używa się yield, która zwraca aktualny wynik, ale zapamiętuje stan funkcji (obiektu), by potem do niego wrócić, gdy ta jest wywoływana z tej samej pętli. Na przykład:
def gen_int(N):
for i in xrange(N):
yield i
W Pythonie 2.4 doszedł nowy element o nazwie wyrażenia generatorowe mające na celu uproszczenie składni dla prostych wywołań generatorów:
gen_squares = (i**2 for i in range(5))
Powyższe wyrażenie odpowiada zdefiniowaniu funkcji:
def gen_kwadratow():
for i in range(5):
yield i**2
Stosowanie generatorów upraszcza znacznie rozwiązywanie wielu problemów, które w Pythonie dzięki temu da się rozwiązać bardzo szybko, przy niewielkim nakładzie na napisanie kodu.
Obiektowość
To jeden z ciekawszych tematów jeżeli chodzi o Python'a. W tym języku (prawie) wszystko jest obiektem. Jedynym wyjątkiem są typy wbudowane, można z nich jednak dziedziczyć. Same typy, też są typem, a atrybuty obiektu można pobrać jako słownik.
W Pythonie nie ma hermetyzacji (enkapsulacji) stąd wszystkie metody są jawne i publiczne (choć istnieją mechanizmy pozwalające na to wpływać). Prawidłowe użycie obiektów pozostawia się programiście. Natomiast dzięki specyficznym mechanizmom można dopasować klasę praktycznie dowolnie. Każda funkcja, klasa, czy moduł mogą zostać opatrzone komentarzem, który dostępny jest w trybie interaktywnym.
Metody specjalne dostępne w Pythonie pozwalają przekształcać obiekty w funkcje lub kontenery. Przykładowo:
class Pojemnik:
def __call__(self, x):
print "Ten Pojemnik wywołano jako funkcją z parametrem x =", x
def __getitem__(self, key):<br />
return str(key) + "-ty element w kontenerze klasy Pojemnik"
p = Pojemnik()
p('abc')
p(123)
print p['def']
print p[456]
Uruchomienie powyższego kodu daje w wyniku:
Ten Pojemnik wywołano jako funkcją z parametrem x = abc
Ten Pojemnik wywołano jako funkcją z parametrem x = 123
def-ty element w kontenerze klasy Pojemnik
456-ty element w kontenerze klasy Pojemnik
...ciąg dalszy nastąpi...