Python Skąd taka nazwa? Kurs systemu UNIX 1
Cechy języka marketing Obiektowy (dużo prostszy od C++) Darmowy Nie tylko Unix (choć tam najpopularniejszy) Wiele bibliotek (np. Tkinter, czyli interfejs do Tk) Integracja z C, możliwość kompilacji do bytecode u Javy Wiele naturalnych konstrukcji językowych. Łatwy do nauczenia. Kurs systemu UNIX 2
Cechy języka konkrety Są typy, ale dynamiczne, czyli sprawdzane podczas wykonania programu Wsród typów danych: listy, słowniki, łańcuchy. Słowniki mogą być adresowane różnymi typami. Odśmiecanie (czyli, co to jest a=b) i dlaczego nie trzeba używać wskaźników. Moduły, klasy, wyjątki. Kompilowany do kodu pośredniego (jak Java) Kurs systemu UNIX 3
Kto się przyznaje do Pythona Firma RedHat używa Pythona w narzędziach do instalacji Linuksa Google, Infoseek oraz Yahoo! NASA (w systemie sterowania lotami kosmicznymi) Industrial Light & Magic +wiele innych (www.python.org/community/users.html) Kurs systemu UNIX 4
Uruchamianie programów w Pythonie Programy można uruchamiać interakcyjnie % python >>> print "Witaj pi kny ±wiecie" Witaj pi kny ±wiecie >>> x = 123456789000000000000000L >>> Ctrl^D aby wyj± Można (tradycyjnie) napisać #!/usr/bin/python Kurs systemu UNIX 5
Przekazywanie parametrów Poniższy program wypisuje swoje parametry: import sys print sys.argv Można używać niekwalifikowanych nazw, ale wówczas trzeba zaimportować za pomocą from sys import * # ewentualnie from sys import argv Ponieważ argv to lista, zostanie on wypisany jakoś tak: ['aaa', '-x', '-x'] Moduły wyszukiwane są wg ścieżki zapisanej w zmiennej PYTHONPATH. Kurs systemu UNIX 6
Liczby Całkowite: jak typ long w języku C Długie całkowite (nieograniczony rozmiar), 999999999999L Zmiennoprzecinkowe (jak double w języku C). Są też zespolone (3+4j) Standardowe operatory arytmetyczne: jak w C, jest też potęgowanie (2 ** 10) Standardowe operatory relacyjne (<) Kurs systemu UNIX 7
Operatory logiczne Spójniki logiczne: and, or, not. Wartości logiczne podobnie jak w języku C Kurs systemu UNIX 8
Łańcuchy Literały łańcuchowe ograniczone cudzysłowem bądź apostrofem """ ogranicza napisy wieloliniowe Podstawowe operacje: konkatenacja, powtarzanie, długość napisu: >>> "Ala" + ' i as', 3 * "hop!", len("abrakadabra") ('Ala i as', 'hop!hop!hop!', 11) Kurs systemu UNIX 9
Wycinanie Mamy specjalne konstrukcje składniowe do wycinania podnapisów: >>> s = "abrakadabra" >>> s[0], s[2:5], s[:6], s[6:] ('a', 'rak', 'abraka', 'dabra') Jak napis ma długość N, to myślimy, że są w nim kreski o numerach od 0 do N, definiując wycinek mówimy od jakiej do jakiej kreski wycinamy. Kurs systemu UNIX 10
Inne operacje na napisach Podstawowe operacje na napisach zawarte są w module string. Rozdzielania napisów (jak w AWK): >>> string.split("ala ma kota") ['Ala', 'ma', 'kota'] >>> string.split("123:434:656::", ":") ['123', '434', '656', '', ''] Można połączyć z powrotem: >>> x = ['Ala', 'ma', 'kota',''] >>> string.join(x), string.join(x," -- ") ('Ala ma kota ', 'Ala -- ma -- kota -- ') Kurs systemu UNIX 11
Listy Listy służą do przechowywania elementów różnych typów (również list). Przykład: [1,2,'ala','as',[2,3] ] Wiele operacji podobnych jak na napisach: indeksowanie, wycinanie, długość, konkatenacja Pytanie: x in [1,2,3,4]? Funkcja range: >>> range(3),range(5,10) ([0, 1, 2], [5, 6, 7, 8, 9]) Kurs systemu UNIX 12
Sortowanie list Metoda sort służy do sortowania list: >>> x = [4,3,13,4] >>> x.sort() >>> x [3, 4, 4, 13] Wywołanie: obiekt.metoda(argumenty) Kurs systemu UNIX 13
Zmiany stanu Niektóre obiekty mogą zmieniać swój stan, inne nie: zmienne: listy, słowniki, obiekty użytkownika niezmienne: liczby, napisy, krotki Krotki wyglądają b.podobnie do list, ale używa się nawiasów (1,2,3). Dla krotek wycinanie, itd podobnie, ale nie działa np. sort. Kurs systemu UNIX 14
Zmiany stanu przykłady Po lewej stronie podstawinie może być element listy, albo jej wycinek. Przykład >>> L = [2**x for x in range(10)] >>> L[5:8] = ['Uwaga!','Uwaga!'] >>> L[0] = 'Nieciekawy element' >>> L[len(L):len(L)] = ['Koniec'] Kurs systemu UNIX 15
Wynik: ['Nieciekawy element', 2, 4, 8, 16, 'Uwaga!', 'Uwaga!', 256, 512, 'Koniec'] Kurs systemu UNIX 16
Operowanie na niezmiennych obiektach Niezmiennych obiektów nie można zmienić. Jak chcemy a="ala ma kota" zmienić na "Ala posiada kota" to... >>> # Bª d: a[4:6] = "posiada" >>> a = a[:4] + "posiada" + a[6:] >>> a 'Ala posiada kota' Obiekt się nie zmienił, zmienna a oznacza inny obiekt. Jeżeli na napis "Ala ma kota" ktoś patrzył, to nadal widzi to samo. Kurs systemu UNIX 17
Podstawienie Nazwa jest tworzona, jeżeli jest po lewej stronie podstawienia. Ułatwienia syntaktyczne, podstawienia wielokrotne: ta sama wartosc: a = b = c = 5 inne wartości: a,b = b,a Kurs systemu UNIX 18
Instrukcje złożone: pętla for Składnie pętli jak w bash-u: for x in L: print x # lub inne operacje L.sort() # lub co± innego # -- poza p tl! Informacja o strukturze programu przekazywana za pomocą wcięć. Dwukropek występuje w wielu miejscach składni Pythona. Kurs systemu UNIX 19
Słowniki Do adresowanie słowników można użyć dowolnego niezmiennego typu (to tu przydaje się drugi rodzaj list, czyli krotki) Tworzymy słowniki za pomocą: {'ala':3,'ola':5, 'as':6 } Działa test x in D, gdzie x oznacza klucz, Można również iterować indeksy w słowniku za pomocą for i in D: print "d[%s] = %f" % (i,d[i]) Kurs systemu UNIX 20
Przykładowe funkcje działajace na słownikach keys zwraca listę kluczy, items zwraca listę par (klucz,warto± ) dict konstruuje słownik z par, przykładowo: >>> L = [3,5,7,9] >>> LP = [ (x,3*x) for x in L ] >>> dict(lp) {9: 27, 3: 9, 5: 15, 7: 21} dict(d.items()) oznacza ten sam słownik (utworzony ponownie). Kurs systemu UNIX 21
Bardziej zaawansowane narzędzia dla list i słowników Dla list mamy zaimplementowane kilka standardów programowania funkcjonalnego map(lambda x: x+3, range(6) to [3,4,5,6,7,8] filter(lambda x: x%3 == 0, range(10)) to [0, 3, 6, 9] reduce(lambda x,y: x+y, [1,2,3,3]) to 9 Kurs systemu UNIX 22
Instrukcje Oprócz pętli for mamy takie standardowe instrukcje jak while, if z else (oraz elif), break i continue Jak zaczyna się blok, to robimy wcięcie (i pamiętamy o dwukropkach). Kurs systemu UNIX 23
Przykład while x<100: x = x + 1 if x % 3 == 0: print "!" elif X % 3 == 1: print "*" else: if y > 100: continue if y < 7: break y = jakas_funkcja(x,y) print "Po petli!" Kurs systemu UNIX 24