Język Python (3) Język Python (3) 1/35
Język Python (3) 2/35 Kod samotestujący Tworzenie def t e s t e r ( ) : p r i n t ( "Wywołanie funkcji testujacych..." ) i f n ame == main : t e s t e r ( )
Język Python (3) 3/35 Podstawy klas Pojęcia podstawowe instrukcja class tworzy obiekt klasy i przypisuje mu nazwę przypisania wewnątrz instrukcji class tworzą atrybuty klasy atrybuty klasy eksportują stan i zachowanie obiektu wywołanie obiektu klasy tworzy nowy egzemplarz obiektu każdy egzemplarz obiektu otrzymuje atrybuty klasy oraz swoją przestrzeń nazw przypisania do siebie w metodach tworzą atrybuty danego egzemplarza
Język Python (3) 4/35 Podstawy klas przykład (1) Tworzenie klasy c l a s s Klasa1 ( object ) : def p r z y p i s z ( s e l f, w a r t o s c ) : s e l f. dane = w a r t o s c def w y p i s z ( s e l f ) : p r i n t ( s e l f. dane ) Obiekty klasy x = Klasa1 ( ) y = Klasa1 ( ) x. p r z y p i s z ( "napis" ) y. p r z y p i s z ( 1 2 3. 4 5 6 )
Język Python (3) 5/35 Podstawy klas przykład (2) >>> x. w y p i s z ( ) n a p i s >>> y. w y p i s z ( ) 123.456 >>> x. dane = " nowy napis" >>> x. w y p i s z ( ) nowy n a p i s >>> y. w y p i s z ( ) 123.456
Język Python (3) 6/35 Dziedziczenie klas W nagłówku klasy podawane są w nawiasach klasy nadrzędne. Klasy dziedziczą atrybuty ze swoich klas nadrzędnych. Egzemplarze klas przejmują atrybuty ze wszystkich dostępnych klas. Zmiany działania są realizowane za pomocą wprowadzania klas podrzędnych, a nie przez modyfikacje klas nadrzędnych.
Język Python (3) 7/35 Dziedziczenie klas - przykład Definicja c l a s s Klasa2 ( Klasa1 ) : def w y p i s z ( s e l f ) : p r i n t ( Obecne dane = "%s" % s e l f. dane ) Wykorzystanie >>> z = Klasa2 ( ) >>> z. p r z y p i s z (42) >>> z. w y p i s z ( ) Obecne dane = " 42" >>> x. w y p i s z ( ) nowy n a p i s
Język Python (3) 8/35 Klasy mogą przesłaniać operatory języka Python Metody o nazwach w rodzaju nazwa są specjalnymi punktami zaczepienia. Takie metody są wywoływane automatycznie, gdy język Python rozwija operatory. Klasy mogą zastępować większość wbudowanych operacji na typach. Operatory pozwalają na integrację klas z modelem obiektowym języka Python.
Język Python (3) 9/35 Przesłanianie operatorów (1) Metoda Przeciąża Wywołanie init Konstruktor Tworzenie obiektu: Class() del Destruktor Zwolnienie obiektu add Operator + X + Y or Operator X Y call Wywołania X() funkcji repr Drukowania, print X przekształcenia getattr Kwalifikacja X.niezdefiniowany getitem Indeksowanie X[i], w pętli for, testach setitem Przypisanie indeksowane X[i] = war
Język Python (3) 10/35 Przesłanianie operatorów (2) Metoda Przeciąża Wywołanie getslice (tylko python 2) Wycinanie X[a:b] len Długość len(x) cmp Porównanie X == Y radd Prawostronny operator + Nieegzemplarz + X
Język Python (3) 11/35 Przesłanianie operatorów przykład (1) c l a s s Klasa3 ( Klasa2 ) : def i n i t ( s e l f, w a r t o s c ) : s e l f. dane = w a r t o s c def a d d ( s e l f, w a r t o s c ) : return Klasa3 ( s e l f. dane + w a r tosc ) def m u l ( s e l f, w a r t o s c ) : s e l f. dane = s e l f. dane w a r t o s c
Język Python (3) 12/35 Przesłanianie operatorów przykład (2) >>> a = Klasa3 ( "abc" ) >>> a. w y p i s z ( ) Obecne dane = " abc" >>> b = a + xyz >>> b. w y p i s z ( ) Obecne dane = " abcxyz" >>> a 3 >>> a. w y p i s z ( ) Obecne dane = " abcabcabc" >>> a. m u l ( 2 ) >>> a. w y p i s z ( ) Obecne dane = " abcabcabcabcabcabc"
Język Python (3) 13/35 Instrukcje klas Klasa: c l a s s Podklasa ( object ) : dane = mielonka def i n i t ( s e l f, w a r t o s c ) : s e l f. dane = w a r t o s c def w y p i s z ( s e l f ) : p r i n t ( s e l f. dane, Podklasa. dane ) Wywołanie >>> x = Podklasa ( 1 ) >>> y = Podklasa ( 2 ) >>> x. w y p i s z ( ) ; y. w y p i s z ( ) 1 mielonka 2 mielonka
Język Python (3) 14/35 Metody klas Klasa c l a s s NowaKlasa ( object ) : def p r i n t e r ( s e l f, t e x t ) : p r i n t ( t e x t ) Wywołanie >>> x = NowaKlasa ( ) >>> x. p r i n t e r ( Hello world! ) H e l l o world! >>> NowaKlasa. p r i n t e r ( x, Hello world! ) H e l l o world!
Język Python (3) 15/35 Metody dziedziczone Klasy: c l a s s Nad ( object ) : def metoda ( s e l f ) : p r i n t wewnatrz Nad.metoda c l a s s Pod ( Nad ) : def metoda ( s e l f ) : p r i n t uruchamia sie Pod.metoda Nad. metoda ( s e l f ) p r i n t konczy sie Pod.metoda
Język Python (3) 16/35 Metody dziedziczone Wywołanie >>> x = Nad ( ) >>> x. metoda ( ) wewnatrz Nad. metoda >>> x = Pod ( ) >>> x. metoda ( ) uruchamia s i e Pod. metoda wewnatrz Nad. metoda konczy s i e Pod. metoda
Język Python (3) 17/35 Podstawy działania wyjątków Instrukcje try/except/else t r y : <i n s t r u k c j e > except <nazwa >: <i n s t r u k c j e > except <nazwa >, <dane >: # python3 : <i n s t r u k c j e > e l s e : <i n s t r u k c j e > e x c e p t <nazwa> as <da Instrukcje try/finally t r y : <i n s t r u k c j e > f i n a l l y : <i n s t r u k c j e >
Język Python (3) 18/35 Ręczne wyzwalanie wyjątku Instrukcja raise r a i s e <nazwa> r a i s e <nazwa >, <dane> # python3 : r a i s e <nazwa>(<dane >)
Język Python (3) 19/35 Komunikaty o błędach bad.py def gobad ( x, y ) : return x / y def gosouth ( x ) : p r i n t gobad ( x, 0) gosouth ( 1 ) $ python bad. py Traceback ( i n n e r m o s t l a s t ) : F i l e "bad.py", l i n e 7, i n? gosouth ( 1 ) F i l e "bad.py", l i n e 2, i n g l o b a l return x / y Z e r o D i v i s i o n E r r o r : i n t e g e r or modulo
Język Python (3) 20/35 Przechwytywanie wyjątków def kaboom ( l i s t, n ) : p r i n t l i s t [ n ] t r y : kaboom ( [ 0, 1, 2 ], 3) except : p r i n t Hello world!
Język Python (3) 21/35 Wyjątki zdefiniowane przez użytkownika c l a s s MyError ( object ) : None def s t u f f ( f i l e ) : r a i s e MyError f i l e = open ( data, w ) t r y : s t u f f ( f i l e ) f i n a l l y : f i l e. c l o s e ( )
Język Python (3) 22/35 Klauzule instrukcji try Postać klauzuli except: except name: except name, value: except name as value: except (name1, name2): else: finally: Znaczenie Wyłapuje wszystkie rodzaje wyjątków Wyłapuje tylko określony rodzaj wyjątku Wyłapuje wyjątek i jego dane dodatkowe (python2) Wyłapuje wyjątek pod nazwą value (python3) Wyłapuje dowolny z wpisanych wyjątków Uruchamia blok, jeśli nie pojawiły się żadne wyjątki Zawsze uruchamia blok
Język Python (3) 23/35 Wyłapywanie jednego z N wyjątków t r y : a c t i o n ( ) except NameError :... except I n d e x E r r o r :... except KeyError :... except ( A t t r i b u t e E r r o r, TypeError, S y n t a x E r r o r ) :...
Język Python (3) 24/35 Zagnieżdżone bloki try nested.py def a c t i o n 2 ( ) : p r i n t 1 + [ ] def a c t i o n 1 ( ) : t r y : a c t i o n 2 ( ) except TypeError : p r i n t ( inner try ) t r y : a c t i o n 1 ( ) except TypeError : p r i n t ( outer try ) inner try
Wbudowane wyjątki Nazwa wyjątku Exception ArithmeticError AssertionError AttributeError EOFError IOError ImportError KeyError Opis Wbudowany wyjątek bazowy Wyjątek obejmujący błędy dotyczące obliczeń Zgłaszany przez instrukcję assert Zgłaszany w przypadku niedopasowanej listy argumentów Zgłaszany przez raw input w przypadku napotkania końca pliku Zgłaszany w przypadku błędu operacji wejścia/wyjścia, np. próby otwarcia pliku Zgłaszany w przypadku niepowodzenia próby importu modułu Zgłaszany przez słownik, w przypadku próby odczytu nieistniejącego klucza Język Python (3) 25/35
Język Python (3) 26/35 Informacje dodatkowe Przekazywanie opcjonalnych danych (mojwyjatek.py) c l a s s mojwyjatek ( object ) : def i n i t ( s e l f, a ) : s e l f. n a p i s = a def r e p r ( s e l f ) : return s e l f. n a p i s def f u n k c j a ( ) : r a i s e mojwyjatek, "hello" # python3 : r a i s e mojwyjate t r y : f u n k c j a ( ) except mojwyjatek, i n f o # python3 : e x c e p t mojwyjatek as p r i n t ( opis:, i n f o ) $./mojwyjatek.py opis: hello
Język Python (3) 27/35 Moduł os Nazwa funkcji getcwd() listdir(s) chown(s, uid, gid) chmod(s, t) rename(src, dest) remove(s) rmdir(s) mkdir(s) system(p) s łańcuch tekstowy ze ścieżką p łańcuch tekstowy z poleceniem t liczba określające uprawnienia Działanie Zwraca łańcuch z bieżącym katalogiem Zwraca listę plików z katalogu Zmienia właściciela pliku Zmienia uprawnienia do pliku Zmienia nazwę pliku Usuwa plik Usuwa katalog Tworzy katalog Wywołuje polecenie systemowe
Język Python (3) 28/35 Atrybuty łańcuchowe modułu os Nazwa atrybutu curdir pardir sep altsep pathsep Znaczenie Bieżący katalog Katalog nadrzędny Znak rozdzielający elementy ścieżki Alternatywny znak rozdzielający elementy ścieżki Znak rozdzielający ścieżki >>> os. c u r d i r. >>> os. p a r d i r.. >>> os. sep / >>> os. a l t s e p >>> os. pathsep :
Język Python (3) 29/35 Funkcje modułu os.path Nazwa funkcji split(s) join(s,..) exists(s) expandvars(s) expanduser(s) isfile(s) isdir(s) islink(s) normpath(s) normcase(s) Działanie Dzieli ścieżkę na parę zawierającą początek i koniec Łączy składniki ścieżki Zwraca prawdę, jeśli ścieżka istnieje Rozwija argument za pomocą zmiennych systemowych Przekształca ścieżkę wykorzystując znak Sprawdza czy s jest plikiem Sprawdza czy s jest katalogiem Sprawdza czy s jest dowiązaniem Normalizuje ścieżkę Normalizuje ścieżkę
Język Python (3) 30/35 Funkcje modułu os.path >>> import o s >>> os. getcwd ( ) /home/staff >>> os. path. s p l i t ( os. getcwd ( ) ) ( /home, staff ) >>> os. path. j o i n ( os. getcwd ( ), tmp ) /home/staff/tmp >>> os. path. expanduser ( ~ ) /home/staff >>> os. path. e x p a n d v a r s ( $TMP ) $TMP >>> os. path. e x p a n d v a r s ( $HOME ) /home/staff >>> os. path. i s d i r ( os. getcwd ( ) ) True >>> os. path. i s f i l e ( os. getcwd ( ) ) F a l s e
Język Python (3) 31/35 Moduł shutil Nazwa funkcji copyfile(src, dst) copymode(src, dst) copystat(src, dst) copy(src, dst) copy2(src, dst) copytree(src, dst, sym=0) rmtree(s) Działanie Tworzy kopię pliku Kopiuje informacje o atrybutach Kopiuje informacje o stanie Tworzy kopię pliku i kopiuje informacje o atrybutach Tworzy kopię pliku i kopiuje informacje o stanie Kopiuje rekurencyjnie katalog Usuwa rekurencyjnie katalog
Język Python (3) 32/35 Moduł csv Przykład odczytu import c s v r e a d e r = c s v. r e a d e r ( open ( "passwd", "rb" ), d e l i m i t e r= :, q u o t i n g=c s v.quote NONE) f o r row i n r e a d e r : p r i n t ( row ) Przykład zapisu import c s v w r i t e r = c s v. w r i t e r ( open ( "some.csv", "wb" ) ) w r i t e r. w r i t e r o w s ( s o m e i t e r a b l e )
Język Python (3) 33/35 Dokumentacja kodu z wykorzystaniem doctest dc.py def sumuj ( a, b ) : """ Funkcja zwraca sume argumentow Przyklad: >>> sumuj(2, 3) 5 >>> sumuj( ab, cd ) abcd """ return a +b i f n ame == " main " : import d o c t e s t d o c t e s t. testmod ( )
Język Python (3) 34/35 Tworzenie dokumentacji $ pydoc dc Help on module dc: NAME dc FILE /tmp/dc.py FUNCTIONS sumuj(a, b) Funkcja zwraca sume argumentow Przyklad: >>> sumuj(2, 3) 5 >>> sumuj( ab, cd ) abcd
Język Python (3) 35/35 W wykładzie wykorzystano materiały The Python Tutorial, http://docs.python.org/tutorial/index.html Mark Lutz, David Ascher, Python. Wprowadzenie, Helion, 2002