Python wprowadzenie Krzysztof Katarzyński Centrum Astronomii UMK Nikt nie spodziewa się Hiszpańskiej Inkwizycji! Latajacy Cyrk Monty Pythona
Geneza Pythona Python jest językiem programowania stworzonym przez holenderskiego programistę Guido van Rossuma. W zamyśle twórcy, język ten ma charakteryzować się: łatwościa programowania, możliwościami porównywalnymi z innymi językami (np. C czy Fortran), Guido van Rossum krótkim czasem programowania, oraz otwartościa kodu. Spory wkład w rozwój Pythona włożyło też wiele innych osób, które nie sposób wymienić... Nazwa języka pochodzi od serialu komediowego Monty Python s Flying Circus (Latajacy Cyrk Monty Pythona), którego fanem jest van Rossum. Latajacy Cyrk Monty Pythona Krzysztof Katarzyński, CA UMK Wprowadzenie, strona 2/15
Python zalety Logo Pythona Do zalet Pythona można zaliczyć to że: jest językiem wysokiego poziomu, szczególnie przyjaznym dla poczatkuj acych programistów, posiada rozbudowana bibliotekę standardowa, istnieje ogromna baza dodatkowych modułów (bibliotek), które pozwalaja realizować najbardziej złożone projekty programistyczne, wspiera różne paradygmaty programowania, np. programowanie obiektowe, imperatywne, funkcyjne, posiada dynamiczny system typów danych oraz automatyczne zarzadzanie pamięcia, jest oprogramowaniem typu Open Source, dostępnym za darmo na wiele różnych systemów operacyjnych, programy pisane w Pythonie działaja bez dodatkowych modyfikacji na różnych systemach/komputerach, kod programu napisanego w Pythonie jest zwykle dużo krótszy od tego co trzeba napisać w innych językach aby uzyskać identyczny rezultat, schemat programowania w Pythonie niejako wymusza pisanie przejrzystych, klarownych kodów. Krzysztof Katarzyński, CA UMK Wprowadzenie, strona 3/15
Przykład bardzo prostego programu Program tworzy ciagi liczb x=[0,...,4] oraz y=[4,...,0] a następnie mnoży ich zawartość i umieszcza wynik w zmiennej z. Najważniejsze kroki wypisywane sa na ekran. 1 # stosujac tylko podstawowe polecenia Pythona 2 c = list (" 01234 ") 3 x = map ( float, c) 4 n = len (x) 5 y = [] 6 z = [] 7 for i in range ( n): 8 y. append (x[n-i -1]) 9 print x 10 print y 11 for i in range ( len (x )): 12 z. append (x[i]*y[i]) 13 print z Program wykorzystuje podstawowe funkcje, zawsze dostępne, wbudowane w Pythona. Krzysztof Katarzyński, CA UMK Wprowadzenie, strona 4/15
2 Ten sam program napisany w C 1 # include <stdio.h> 2 # define n 5 3 double x[n], y[n], z[n]; 4 int main ( void ) { 5 int i; 6 for (i =0; i<n; i ++) { 7 x[i] = i; 8 y[i] = n-i -1; 9 } 10 printf ("["); 11 for (i =0; i<n; i ++) { 12 if (i <(n -1)) 13 printf (" %3.1f, ", x[i ]); 14 else 15 printf (" %3.1 f]\n", x[i ]); 16 } 17 printf ("["); 18 for (i =0; i<n; i ++) { 19 if (i <(n -1)) 20 printf (" %3.1f, ", y[i ]); 21 else 22 printf (" %3.1 f]\n", y[i ]); 23 } 24 printf ("["); 25 for (i =0; i<n; i ++) { 26 z[i] = x[i]*y[i]; 27 if (i <(n -1)) 28 printf (" %3.1f, ", z[i ]); 29 else 30 printf (" %3.1 f]\n", z[i ]); 31 } 32 return 0; 33 } Krzysztof Katarzyński, CA UMK Wprowadzenie, strona 5/15
A można jeszcze prościej! Wykorzystujac funkcje linspace (ang. linear space liniowy/równy odstęp) z modułu numpy (numeryczny Python) możemy jeszcze bardziej uprościć nasz przykładowy program: 1 # z uzyciem modulu numpy 2 from numpy import linspace 3 x = linspace (0.0, 4.0, 5) 4 y = linspace (4.0, 0.0, 5) 5 print x 6 print y 7 z = x* y 8 print z linspace pozwala odpowiednio utworzyć zmienne x i y, które następnie mnożymy jak dwie liczby chociaż faktycznie sa to ciagi liczb. Dodatkowo można dynamicznie dodawać lub usuwać dowolne części utworzonych ciagów, co w programie napisanym w C wymagałoby znacznego skomplikowania kodu. Krzysztof Katarzyński, CA UMK Wprowadzenie, strona 6/15
4 SimplePlot przykład programu z GUI 1 #!/ usr /bin /env python 2 # -*- coding : utf -8 -*- 3 # NAG ŁÓ WKI 4 import gtk 5 from pylab import * 6 from matplotlib. figure import Figure 7 from matplotlib. backends. backend_gtkagg import FigureCanvasGTKAgg as FCanvas 8 from matplotlib. backends. backend_gtkagg import NavigationToolbar2GTKAgg as NTool 9 # OBSZAR RYSOWANIA 10 PlotFIG = Figure ( figsize=(8,6), dpi =100) 11 PlotAXI = PlotFIG. add_subplot (111) 12 PlotCNV = FCanvas ( PlotFIG ) 13 # OKNO I INTERFEJS UŻ YTKOWNIKA 14 MainWin = gtk. Window () 15 MainWin. connect (" destroy ", lambda x: gtk. main_quit ()) 16 MainWin. set_default_size (800, 600) 17 MainWin. set_title (" Simple Plot v0.2") 18 MainVBX = gtk. VBox () 19 MainWin.add ( MainVBX ) 20 MainVBX. pack_start ( PlotCNV ) 21 MainTBR = NTool ( PlotCNV, MainWin ) 22 MainVBX. pack_start (MainTBR, False, False ) 23 FuncHBX = gtk. HBox () 24 FuncLAB = gtk. Label ("f(x) = ") 25 FuncHBX.add ( FuncLAB ) 26 FuncENT = gtk. Entry () 27 FuncHBX.add ( FuncENT ) 28 FuncBUT = gtk. Button ("Plot ") 29 FuncHBX.add ( FuncBUT ) 30 MainVBX. pack_start (FuncHBX, expand=false ) Krzysztof Katarzyński, CA UMK Wprowadzenie, strona 7/15
5 SimplePlot cd. 31 # PROCEDURA RYSUJ ĄCA 32 def Plot (self, event ): 33 xd = linspace ( -10, 10, 1000) 34 yd = linspace (0, 1, len (xd )) 35 for i in range ( len (xd )): 36 x = xd[i] 37 yd[i] = eval ( FuncENT. get_text ()) 38 PlotAXI.plot (xd, yd, label=funcent. get_text ()) 39 PlotAXI. legend () 40 PlotCNV. draw () 41 FuncBUT. connect (" button_press_event ", Plot ) 42 # START PROGRMU 43 MainWin. show_all () 44 gtk. main () 1.0 0.5 sin(x)/x exp(-x**2) sin(x/2.0) 0.0 0.5 1.0 10 5 0 5 10 Krzysztof Katarzyński, CA UMK Wprowadzenie, strona 8/15
Python gdzie znaleźć, jak zainstalować Systemy operacyjne MS Windows, Mac OS X oraz również Linux: www.enthought.com CANOPY www.enthought.com/products/canopy a www.activestate.com ActivePython www.activestate.com/activepython Sa to komercyjne dystrybucje Pythona, które w podstawowych wersjach musza być rozpowszechniane za darmo (Open Source). Podstawowe wersje zawieraja Pythona plus kilkadziesiat najważniejszych modułów oraz zintegrowane środowisko programistyczne czyli prawie wszystko co będzie potrzebne w trakcie tego kursu. Podstawowa wersja Pythona dostępna jest również, oczywiście na stronie projektu www.python.org (www.python.org/download). Nie zawiera ona jednak dodatkowych modułów oraz środowiska programistycznego. a Szczegółowe odnośniki moga się zmieniać. Krzysztof Katarzyński, CA UMK Wprowadzenie, strona 9/15
Dystrybucja Enthought CANOPY Krzysztof Katarzyński, CA UMK Wprowadzenie, strona 10/15
CANOPY menadżer modułów Krzysztof Katarzyński, CA UMK Wprowadzenie, strona 11/15
Python pod Linuxem Python w różnych dystrybucjach Linuxa jest instalowany w trakcie instalacji systemu operacyjnego. Zwykle jednak trzeba doinstalować dodatkowe moduły: Linux Debian, Ubuntu, Mint i pochodne: sudo apt - get install python - scipy python - sympy Linux Mandriva i pochodne: sudo urpmi python - scipy python - sympy Linux Fedora i pochodne: sudo yum install python - scipy python - sympy Instalujemy wersje 2.7.x, wersja 3.3.x nie weszła jeszcze do powszechnego użytku. Krzysztof Katarzyński, CA UMK Wprowadzenie, strona 12/15
Python online Tzw. konsolę tekstowa Pythona można przetestować w przegladarce internetowej pod adresami: pythonwebconsole.thomnichols.org shell.appspot.com py-ide-online.appspot.com zatwierdzamy Ctrl-Enter www.pythonanywhere.com strona komercyjna live.sympy.org obliczenia symboliczne Nie sa to wszystkie dostępne konsole Pythona online. Python jest bardzo popularnym językiem programowania i co za tym idzie można znaleźć więcej tego typu stron. Należy jednak pamiętać, że sa to zwykle podstawowe a często nawet przestarzałe wersje Pythona. Interfejs przegladarki internetowej oraz brak dodatkowych modułów bardzo ograniczaja możliwości tego języka. Krzysztof Katarzyński, CA UMK Wprowadzenie, strona 13/15
Pomoc online i podręczniki W internecie: Podręcznik programisty Pythona - opis języka Guido van Rossum, pl.python.org/docs/ref/ref.html Zanurkuj w Pythonie Mark Pilgrim i inni, pl.wikibooks.org/wiki/zanurkuj_w_pythonie Oficjalna dokumentacja Pythona docs.python.org Think Python. How to Think Like a Computer Scientist Allen B. Downey www.greenteapress.com/thinkpython/thinkpython.html W księgarni: Python. Wprowadzenie Mark Lutz, wyd. HELION Python. Od podstaw praca wieloautorska, wyd. HELION Krzysztof Katarzyński, CA UMK Wprowadzenie, strona 14/15
Lista programów 1./python/przyklad_P1.py 2./python/przyklad_C.c 3./python/przyklad_P2.py 4./python/splot_v02.py Krzysztof Katarzyński, CA UMK Wprowadzenie, strona 15/15
Wszelkie prawa zastrzez one! Rozpowszechnianie oraz wykorzystywanie kursu i programów do niego dołaczonych, w całos ci lub fragmentach bez zgody autora jest zabronione!