Język Python (3) Język Python (3) 1/35

Podobne dokumenty
Środowisko programisty

Kurs rozszerzony języka Python

Język Python (2) Język Python (2) 1/36

Pisząc kod w Pythonie na pewno już nie raz coś poszło nie tak i Shell wypisał komunikat o błędzie podobny do poniższego:

Język Python. Język Python 1/35

Programowanie obiektowe

Wyjątki. try - except

Zaawansowany kurs języka Python

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

Kurs języka Python. Wykład 11. Marcin Młotkowski. 4 stycznia Kontrola poprawności podczas biegu programu. 2 Testowanie oprogramowania

Informatyka 2015/16 wykład 9. Pliki Sterowanie przebiegiem programu cz. 2. Dr inż. Witold Nocoń (p. 230)

Programowanie w Sieci Internet. Python: Operacje z plikami oraz obsługa wyjątków

Wykład 4: Klasy i Metody

Spis treści. Dekoratory. 1 Dekoratory 1.1 Zadanie Zadanie Zadanie Zadanie 4

Metaprogramowanie w Ruby

Programowanie obiektowe

Środowisko programisty

Programowanie obiektowe

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Programowanie i projektowanie obiektowe

Zaawansowany kurs języka Python

Języki i metody programowania

Wykład 5: Klasy cz. 3

Podstawy programowania w Pythonie

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Podstawy bioinformatyki 2017/18

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Wykład 8: Obsługa Wyjątków

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Podstawy i języki programowania

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

Wykład 8: klasy cz. 4

Delphi Laboratorium 3

Kurs rozszerzony języka Python

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Podstawy Pythona. Krzysztof Gdawiec. Instytut Informatyki Uniwersytet Śląski

Python. Wprowadzenie. Jolanta Bachan

Obsługa błędów za pomocą wyjątków. Paweł Motofa (140746)

Programowanie w języku Python. Grażyna Koba

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Klasy cd. Struktury Interfejsy Wyjątki

Język C++ zajęcia nr 2

Zaawansowany kurs języka Python

Java podstawy jęyka. Wykład 2. Klasy abstrakcyjne, Interfejsy, Klasy wewnętrzne, Anonimowe klasy wewnętrzne.

Język programowania Scala / Grzegorz Balcerek. Wyd. 2. Poznań, cop Spis treści

Typy danych, cd. Łańcuchy znaków

Szablony klas, zastosowanie szablonów w programach

Podstawy programowania w Pythonie

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Ćwiczenie 5. Python 3: Programowanie obiektowe i dziedziczenie

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

Kurs rozszerzony języka Python

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Języki i metody programowania Java. Wykład 2 (część 2)

2. Składnia Pythona. Robert Janczewski. Gdańsk, 2014

Programowanie i projektowanie obiektowe

Sphinx - system dokumentacji dla Pythona

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Podstawy bioinformatyki 2017/18

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Wykład 9 Kolekcje, pliki tekstowe, Przykład: Notatnik

Zad.30. Czy można utworzyć klasę, która implementuje oba interfejsy?

Kurs rozszerzony języka Python

Programowanie obiektowe

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

Podstawy bioinformatyki 2017/18

Wykład 2 Programowanie zorientowane obiektowo w Pythonie

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Multimedia JAVA. Historia

Programowanie i projektowanie obiektowe

Podstawy programowania w Pythonie

Listy, krotki, słowniki, funkcje

Programowanie w Internecie. Java

Wyjątki Monika Wrzosek (IM UG) Programowanie obiektowe 180 / 196

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Podstawy programowania. Python wykład 6

Operacje wejścia/wyjścia (odsłona druga) - pliki

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.

Wstęp do programowania

Wprowadzenie do Python

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Kurs WWW. Paweł Rajba.

Wstęp do programowania

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.

Temat zajęć: Tworzenie skryptów powłoki systemu operacyjnego.

Metody zawarte w klasie File: boolean createnewfile() tworzy nowy, pusty plik, ale tylko jeśli on wcześniej nie istniał. boolean delete() usuwa dany

Programowanie obiektowe

Język PL/SQL. Rozdział 3. Obsługa błędów wykonania Wyjątki predefiniowane i użytkownika, zgłaszanie i obsługa wyjątków.

Spis treści. Funkcje. 1 Funkcje 1.1 Zadanie Zadanie Zadanie Zadanie Zadanie Zadanie Zadanie 7


KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Dekoratora używa się wstawiając linijkę zaczynającą się przed definicją dekorowanego obiektu (klasy czy funkcji).

Funkcje są prawdopodobnie najważniejszą częścią każdego poważnego programu (w każdym języku programowania).

Transkrypt:

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