Scott Tiger Tech Blog

Blog technologiczny firmy Scott Tiger S.A.

Archiwum: 'Python' Kategorie

Python

Autor: Piotr Karpiuk o 3. października 2010

Python jest popularnym, bogatym w biblioteki, opensource’owym, interpretowanym, obiektowym, skryptowym językiem programowania o blisko 20-letniej historii. Wykorzystywany szeroko przez firmy takie jak Google, Yahoo!, CERN czy NASA (w tej pierwszej pracuje twórca języka, holenderski programista Guido van Rossum). Dostępny na prawie każdym systemie operacyjnym, a nawet na JVM (Jython) i .NET (Iron Python). Jest językiem ogólnego przeznaczenia i można w nim pisać aplikacje GUI (np. dla Qt przy użyciu biblioteki PyQT), ale często jest postrzegany jako język skryptowy dla aplikacji webowych – to w Pythonie zaimplementowane są popularne frameworki takie jak Django, Pylons, TurboGears, web2py, czy Zope.

Cechy charakterystyczne Pythona 3.x z lotu ptaka to m.in.:

  • wszystko jest obiektem (również liczba całkowita, funkcja, moduł itp.) i ma swoją klasę; dostępne są m.in. wielodziedziczenie i klasy abstrakcyjne,
  • bardzo rozbudowane mechanizmy refleksji i metaprogramowania (oprócz klasycznego eval() można np. tworzyć w locie klasy i metaklasy, dodawać metody do istniejących klas, atrybuty do istniejących obiektów, a dostęp do atrybutów – nawet nieistniejących – może być przechwytywany),
  • do wyznaczania bloków kodu wykorzystuje wcięcia wierszy (!), co wpływa na estetykę źródeł,
  • można przedefiniowywać operatory,
  • bardzo elastyczny mechanizm przekazywania parametrów do funkcji/metody (pozycyjnie, po nazwie, możliwe przyjęcie dowolnej liczby parametrów, adnotacje – patrz dalej, itp.),
  • funkcja jest bytem pierwszego rzędu (może być przekazywana jako parametr, zwracana jako wynik funkcji), dostępne są domknięcia oraz całkiem pokaźny arsenał technik programowania funkcyjnego (funkcje anonimowe, mapowanie, filtrowanie, redukcja, funkcje częściowe) – o czym będzie dalej,
  • współprogramy (ang. coroutines) pozwalające tworzyć generatory leniwie wyliczające kolejne elementy iteracji oraz potoki przetwarzania danych przypominające potoki w UNIXowej powłoce,
  • dekoratory funkcji i klas: dekorator jest funkcją która pobiera dekorowany obiekt (np. funkcję), wzbogaca go/modyfikuje i zwraca – co nawiązuje do idei programowania aspektowego (przykład: dekorator który loguje nazwę, parametry wywołania i wynik wykonania dekorowanej funkcji),
  • a ponadto obsługa wyjątków, dynamiczne typowanie, garbage collector i ogólnie to wszystko co mają inne współczesne języki skryptowe.

Ciekawostki składniowe które być może zachęcą kogoś do spojrzenia na język łaskawym okiem:

Segmentacja

moja_lista[3:10:2]
zwraca listę: co drugi element wycinka 3..9 listy moja_lista
moja_lista[::-1]
zwraca odwróconą listę

Czytaj więcej »

Tags:
Napisany w Python | Brak komentarzy »

Udostępnianie katalogu w sieci

Autor: Piotr Karpiuk o 4. sierpnia 2010



python -m SimpleHTTPServer 8080
udostępnia bieżący katalog w sieci WWW na porcie 8080 (brak numeru portu oznacza 8000)

Napisany w Linux, Python | Brak komentarzy »