Środowisko programisty



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

Informatyka, I stopień. Programowanie (PRO300.1)

WYKŁAD 8. Postacie obrazów na różnych etapach procesu przetwarzania

Kurs rozszerzony języka Python

Środowisko programisty

Bazy danych. Andrzej Łachwa, UJ, /15

Zaawansowany kurs języka Python

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

Wykład 2. Budowa komputera. W teorii i w praktyce

Automatyzacja procesu publikowania w bibliotece cyfrowej

Instrukcja obsługi Norton Commander (NC) wersja 4.0. Autor: mgr inż. Tomasz Staniszewski

Aplikacje internetowe i rozproszone - laboratorium

Stowarzyszenie Lokalna Grupa Działania EUROGALICJA Regulamin Rady

Zmiany w programie C GEO v. 6.5

API transakcyjne BitMarket.pl

PL/SQL. Zaawansowane tematy PL/SQL

EGZAMIN MATURALNY Z INFORMATYKI 19 MAJA 2015

Kompozycja i dziedziczenie klas

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

Zintegrowane Systemy Zarządzania Biblioteką SOWA1 i SOWA2 SKONTRUM

Spis treści 1. Wstęp 2. Projektowanie systemów informatycznych

Specyfikacja techniczna banerów Flash

Praca na wielu bazach danych część 2. (Wersja 8.1)

Program szkoleniowy Efektywni50+ Moduł III Standardy wymiany danych

PERSON Kraków

Elementy cyfrowe i układy logiczne

Wiedza niepewna i wnioskowanie (c.d.)

G PROGRAMMING. Part #4

Miejski System Zarządzania - Katowicka Infrastruktura Informacji Przestrzennej

WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z PRZEDMIOTU PROGRAMOWANIE APLIKACJI INTERNETOWYCH

PowerShell. Sławomir Wawrzyniak

Tworzenie modelu obiektowego

FORMULARZ POZWALAJĄCY NA WYKONYWANIE PRAWA GŁOSU PRZEZ PEŁNOMOCNIKA NA NADZWYCZAJNYM WALNYM ZGROMADZENIU CODEMEDIA S.A

Zad.1 Pokazać pierwszeństwo trybu odmów przed zezwalaj.

Regulamin serwisu internetowego ramowka.fm

PROE wykład 7 kontenery tablicowe, listy. dr inż. Jacek Naruniec

INSTRUKCJA OBS UGI

enova Workflow Obieg faktury kosztowej

System kontroli wersji SVN

G PROGRAMMING. Part #6

InsERT GT Własne COM 1.0

Witamy w Bibliotece Wydziału Nauk Politycznych i Dziennikarstwa. Przygotowała mgr Ewelina Pilarska

ECDL Advanced Moduł AM3 Przetwarzanie tekstu Syllabus, wersja 2.0

Elementy animacji sterowanie manipulatorem

Wartości domyślne, szablony funkcji i klas

Microsoft Management Console

Zaawansowany kurs języka Python

Charakterystyka systemów plików

EGZAMIN MATURALNY Z INFORMATYKI CZERWIEC 2011 POZIOM ROZSZERZONY WYBRANE: CZĘŚĆ I. Czas pracy: 90 minut. Liczba punktów do uzyskania: 20

Spis treści. Rozdział 1 ewyniki. mmedica - INSTR UKC JA UŻYTKO W NIKA

WYKŁAD 1 SYSTEMY CMS CZĘŚĆ 1

Regulamin Konkursu Start up Award 9. Forum Inwestycyjne czerwca 2016 r. Tarnów. Organizatorzy Konkursu

Warszawa, r.

Poniżej instrukcja użytkowania platformy

JĘZYK UML JAKO NARZĘDZIE MODELOWANIA PROCESU PROJEKTOWO-KONSTRUKCYJNEGO

Programowanie obiektowe

Automatyka. Etymologicznie automatyka pochodzi od grec.

0.1 Hierarchia klas Diagram Krótkie wyjaśnienie

Instrukcja programu PControl Powiadowmienia.

Struktura plików wejściowych kontrahenci krajowi i zagraniczni ipko biznes

Instrukcja obsługi. Oprogramowanie SAS 31

Pracownia internetowa w ka dej szkole (edycja 2004/2005)

Uniwersytet Rzeszowski

Uchwała nr 21 /2015 Walnego Zebrania Członków z dnia w sprawie przyjęcia Regulaminu Pracy Zarządu.

Projektowanie i programowanie obiektowe (materiały do wykładu cz. VI)

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

Wykład 8 Ochrona danych wprowadzenie Sterowanie dostępem do danych Sterowanie przepływem danych Ograniczanie możliwości wnioskowania Szyfrowanie

INFORMATOR TECHNICZNY WONDERWARE

1) Dziekan lub wyznaczony przez niego prodziekan - jako Przewodniczący;

REGULAMIN RADY RODZICÓW DZIAŁAJĄCEJ PRZY SZKOLE PODSTAWOWEJ NR 29 IM. GIUSEPPE GARIBALDIEGO W WARSZAWIE

Wdrożenie modułu płatności eservice dla systemu Virtuemart 2.0.x

Siemens IO-Link. Smart TIA integration of sensors and actuators

REGULAMIN RADY RODZICÓW SZKOŁY PODSTAWOWEJ NR 6 IM. ROMUALDA TRAUGUTTA W LUBLINIE. Postanowienia ogólne

Programowanie i projektowanie obiektowe

Mechanizmy refleksji w Javie i C# Autor: Aleksander Nałęczyński

Arkusz zawiera informacje prawnie chronione do momentu rozpocz cia egzaminu.

MANIFEST Gastro Klasyka

Bazy danych II. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

REGULAMIN PRACY ZARZĄDU GDAŃSKIEJ ORGANIZACJI TURYSTYCZNEJ (GOT)

Technologie internetowe Internet technologies Forma studiów: Stacjonarne Poziom kwalifikacji: I stopnia. Liczba godzin/tydzień: 2W, 2L

Tekst ozdobny i akapitowy

Zdalne odnawianie certyfikatów do SWI

INSTRUKCJA KORZYSTANIA Z ELEKTRONICZNEJ ŚCIEŻKI WYKAZÓW

Instalacja. Zawartość. Wyszukiwarka. Instalacja Konfiguracja Uruchomienie i praca z raportem Metody wyszukiwania...

REGULAMIN ZESPOŁÓW ORZEKAJĄCYCH PORADNI PSYCHOLOGICZNO - PEDAGOGICZNEJ NR 3 W GDYNI

Instrukcja zarządzania systemem informatycznym służącym do przetwarzania danych osobowych

Regulamin Obrad Walnego Zebrania Członków Stowarzyszenia Lokalna Grupa Działania Ziemia Bielska

elektroniczna Platforma Usług Administracji Publicznej

REJESTRATOR RES800 INSTRUKCJA OBSŁUGI

Warsztat naukowca a problem formatu informacji bibliograficznej generowanej przez systemy informacyjne. Remigiusz Sapa IINiB UJ

Rozdział 1. Ogólna charakterystyka podatku od towarów i usług

Implant ślimakowy wszczepiany jest w ślimak ucha wewnętrznego (przeczytaj artykuł Budowa ucha

Obsługa pakietu biurowego OFFICE

Jak postawić tablicę informacyjną? Plan działania dla animatorów przyrodniczych

Podstawy programowania

PORADNIK DLA CZŁONKA WSPÓLNOTY MIESZKANIOWEJ

Krakowska Akademia im. Andrzeja Frycza Modrzewskiego. Karta przedmiotu. obowiązuje studentów, którzy rozpoczęli studia w roku akademickim 2013/2014

Pierwsze kroki. Krok 1. Uzupełnienie danych własnej firmy

Grupa bezpieczeństwa kotła KSG / KSG mini

Transkrypt:

Środowisko programisty 1/35 Środowisko programisty Język Python cz. 3 dr inż. Grzegorz Michalski 7 kwietnia 2014

Środowisko programisty 2/35 Kod samotestujący Tworzenie def t e s t e r ( ) : p r i n t " W y w o a n i e funkcji testujacych..." i f name == main : t e s t e r ( )

Środowisko programisty 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

Środowisko programisty 4/35 Podstawy klas przykład (1) Tworzenie klasy c l a s s Klasa1 : 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 )

Środowisko programisty 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

Środowisko programisty 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.

Środowisko programisty 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

Środowisko programisty 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.

Środowisko programisty 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

Środowisko programisty 10/35 Przesłanianie operatorów (2) Metoda Przeciąża Wywołanie getslice Wycinanie X[a:b] len Długość len(x) cmp Porównanie X == Y radd Prawostronny operator + Nieegzemplarz + X

Środowisko programisty 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 t o s c ) 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

Środowisko programisty 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"

Środowisko programisty 13/35 Instrukcje klas Klasa: c l a s s Podklasa : 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

Środowisko programisty 14/35 Metody klas Klasa c l a s s NowaKlasa : 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!

Środowisko programisty 15/35 Metody dziedziczone Klasy: c l a s s Nad : 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

Środowisko programisty 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

Środowisko programisty 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 >: <i n s t r u k c j e > e l s e : <i n s t r u k c j e > 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 >

Środowisko programisty 18/35 Ręczne wyzwalanie wyjątku Instrukcja raise r a i s e <nazwa> r a i s e <nazwa >, <dane>

Środowisko programisty 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

Środowisko programisty 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!

Środowisko programisty 21/35 Wyjątki zdefiniowane przez użytkownika c l a s s MyError : 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 ( )

Środowisko programisty 22/35 Klauzule instrukcji try Postać klauzuli except: except name: except name, 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 Wyłapuje dowolny z wpisanych wyjątków Uruchamia blok, jeśli nie pojawiły się żadne wyjątki Zawsze uruchamia blok

Środowisko programisty 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 ) :...

Środowisko programisty 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

Środowisko programisty 25/35 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

Informacje dodatkowe Przekazywanie opcjonalnych danych (mojwyjatek.py) c l a s s mojwyjatek : 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" t r y : f u n k c j a ( ) except mojwyjatek, i n f o p r i n t opis:, i n f o $./mojwyjatek.py opis: hello Środowisko programisty 26/35

Środowisko programisty 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) 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 s łańcuch tekstowy ze ścieżką p łańcuch tekstowy z poleceniem t liczba określające uprawnienia

Środowisko programisty 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 :

Środowisko programisty 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ę

Środowisko programisty 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

Środowisko programisty 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

Środowisko programisty 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 )

Środowisko programisty 33/35 Dokumentacja kodu z wykorzystaniem doctest dc.py def sumuj ( a, b ) : Funkcja zwraca sume argumentow P r z y k l a d : >>> sumuj ( 2, 3) 5 >>> sumuj ( ab, cd ) abcd return a +b i f name == " main " : import d o c t e s t d o c t e s t. testmod ( )

Środowisko programisty 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

Środowisko programisty 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