Python - początki

Witam,

Czy znacie jakiś dobry tutorial języka Python? Nie jestem fanem programowania (bardziej sieciowcem), ale w niedługim czasie będę “zmuszony” właśnie do języka Python. Czy ktoś może podzielić się swoimi doświadczeniami? Słyszałem, że to podobno prosty skryptowy język. Mam nadzieję, że nie jest to taka katorga jak C lub Java.

Python to bardzo przyjemny język. Stoi na poziomie (abstrakcji, nie “lepszości”) dużo wyższym niż C i nawet Java. No i jest od nich sporo nowszy, a więc bardziej “na czasie”, chociaż ma dużo mniej “narzędzi towarzyszących”, przez co jest rzadko wykorzystywany w biznesie.

Python jest językiem interpretowanym i wieloplatformowym - zadziała na każdym sprzęcie wyposażonym w interpreter (ale są też wersję na JVM i .NET Framework). Podobnie jak C pozwala pisać proceduralnie, podobnie jak Java obiektowo, a dodaje do tego pewien pierwiastek funkcyjny (kapitalna sprawa, ale do tego polecam jakiś język bardziej na to nakierowany). Składnia jest rozsądna i bardzo przyjemna, trochę mniej rygorystyczna niż w porównywanych językach (opcjonalne kropki i nawiasy, ale zdaje się, że w trzeciej wersji języka nieco się to zmienia). Chyba największa “rewolucja” to rezygnacja z ograniczania bloków kodu nawiasami na rzecz wcięć kodu (spacji albo tabulatorów). Na pierwszy rzut oka wydaje się to być dziwne, ale łatwo idzie się przyzwyczaić (no i pythonowy kod jest albo ładny, albo nie działa :P).

Kolejna sprawa - dynamiczne typowanie. Jedni je lubią, inni nie. Do tej samej zmiennej możesz zapakować liczbę, a potem wstawić Stringa.

Python ma też całkiem sporo bibliotek i niezwykle przyjemne kolekcje wraz z działającymi na nich funkcjami. To język ogólnego przeznaczenia, więc możesz w nim pisać konsolowe skrypty (polecam zabawę z REPL-em, chociaż mało kto docenia jego przydatność), aplikacje graficzne (polecam zabawę Qt) i webowe (parę frameworków, w tym najpopularniejszy Django). W różnych miejscach sieci wypisuje się różne rzeczy o Pythonie i jego szybkości. IMO jest wystarczająco szybki do większości zastosowań. Ni mniej, ni więcej.

Jak dla mnie to całkiem przyjemne “zmuszenie”. Mogłeś trafić dużo gorzej :wink:

http://pl.wikibooks.org/wiki/Zanurkuj_w_Pythonie

http://www.python.rk.edu.pl/w/p/podstawy/

Do czego chcesz używać pythona? Jeśli do aplikacji internetowych to polecam również zapoznanie się z frameworkiem Django. Odnośnie tutoriali to na początek polecam ci serwis codecademy.com gdzie za darmo poznasz podstawy pythona.

Frankfurterium dobrze wypunktował niektóre główne cechy charakterystyczne.

Brzmi to groźnie, więc warto uściślić kilka spraw. Python jest językiem dynamicznie i silnie typowanym. Silne typowanie objawia się w ten sposób:

>>> 3 + 5 + 7

15

>>> 'Hello' + 'And' + 'Goodbye'

'HelloAndGoodbye'

>>> 'Hello' + 5 + 'Goodbye'

Traceback (most recent call last):

  File "", line 1, in 

    'Hello' + 5 + 'Goodbye'

TypeError: Can't convert 'int' object to str implicitly

>>>

W językach słabo typowanych zostałaby dokonana konwersja typów i w wyniku dostalibyśmy “Hello5Goodbye”. To może być czasami mylące lub zaskakujące (patrz JavaScript). Druga sprawa “zapakować liczbę lub stringa do zmiennej” nie jest prawidłowym sformułowaniem. W Pythonie należy rozdzielić nazwy (zmienne) od obiektów. Operacje przypisania w Pythonie realizowane są w ten sposób: 1. Utworzenie obiektu (np. liczby, napisu, listy itd.) 2. Utworzenie zmiennej (o ile jeszcze nie istnieje) 3. Połączenie zmiennej z nowym obiektem – referencja. Typy powiązane są z obiektami, a nie ze zmiennymi. Dlatego możliwe jest wykonanie:

>>> a = 3

>>> a = 'trzy'

Nazwa a odnosi się po prostu do innego obiektu. W tym momencie “odśmiecacz pamięci” może usunąć obiekt (3), do którego nie ma referencji, ale w tym szczególnym przypadku (mała liczba całkowita) tego nie zrobi. Ze względów wydajnościowych małe liczby całkowite trzymane są w pamięci. Zapis:

>>> a = 3

>>> b = a

Oznacza tylko tyle, że tworzony jest obiekt 3, do niego przypisana jest zmienna a, a następnie do tego samego obiektu przypisana jest zmienna b. Na początku może brzmi to skomplikowanie, ale w rzeczywistości jest to prosty mechanizm (oparty na licznikach referencji).