PythonLinuxDay-2008     by Orcim
Presentazione●    Michielutti Loris (nickname) Orcim●    Lavoro nellambito della progettazione●    Dal 1980 scrivo codice ...
Panoramica●    A cosa serve un linguaggio di programmazione●    Cosa si impara programmando●    Quale il miglior linguaggi...
A cosa serve un Linguaggio di                Programmazione●    definire delle sequenza ripetibili     – (sono un programm...
Cosa si impara programmando●    * Logiche      ●                       * Precisione●    * Funzioni     ●                  ...
Quale il miglior linguaggio?●    quello che uno conosce meglio●    il piu aperto possibile●    il piu facile da estendere●...
perche Python?●    Sintassi cristallina    (50% di codice in meno, 300% piu produttivo)●    Interprete interattivo (valuta...
Caratteristiche di base           attenzione Python lavora per referenza!                   (vedremo cosa significa)●    S...
Struttura Dati (tipi)●    Number (int,long, double)          YES●    Booleans                           YES●    Characters...
Numeri>>> a = 5 /   2       # Integer(default)>>> print a2>>> b = 10L           # Long>>> print b10>>> c = a +   3.567   #...
LogicheLe costanti booleaneFalse: 0,None,oggetti e contenitori vuoti True: not 0,oggetti e contenitori non vuoti          ...
Logiche   (and, or)Attenzione and e or non ritornano True e False ma il valore di una delle sotto-espressioni!X and Y and ...
Stringhe   (sono sequenze immutabili)>>> a = “ciao”      # assegnazione>>> print aciao>>> b = a           # copio la refer...
Struttura Dati (avanzata)●    Complex Numbers              YES●    Lists                        YES●    Tuples            ...
Numeri Complessi>>> a = complex(1,2)    # assegnazione                        # usa il tipo float!>>> print   a.real      ...
Liste   (sono sequenze mutabili)>>> a = [1,a,(1+j2)] # assegn. eterogenea>>> b = list(string) # conv. di una stringa>>> pr...
Tuple   (sono sequenze immutabili)>>> t = (1,2,ciao,3)   # assegnazione>>> print t, t[2]        # visualizzazione(1,2,ciao...
Dizionari      (sono mappe non sono sequenze!)  vi accedo per chiave. le chiavi devono essere univoche!>>> d = {uno:1,2:du...
Funzioni●    Verifica dei tipi sugli argomenti      NO●    Parametri di default                   YES●    Parametri per ch...
Funzioni (verifica dei tipi)>>> def = foo(x):      # definizione di una...     print x        # funzione...>>> foo(ciao)  ...
Funzioni     (parametri di default)>>> x = 35            # referenzio un intero>>> def = foo(a=x):   # definizione di una....
Funzioni   (parametri per chiave)>>> def = foo(x=1,y=2,z=3):...     print x,y,z =,x,y,z...>>> foo()           # richiamo d...
Funzioni   (parametri come funzioni)>>> def = foo(x=1,y=2,z=3):...     print x,y,z =,x,y,z...>>> foo(*[4,5])     # passagg...
Controllo dei flussi●    If then else                YES●    Case                        YES●    While do                 ...
if then elseDa console interattiva:>>> x = 3>>> if x < 10: print ciao      False        True...                           ...
caseDa console interattiva:>>>   x = 3>>>   if x == 1: print   uno      if                                             Tru...
while doDa console interattiva:>>> x = 3>>> while x > 0:                              do...     print x =, x...     x -=1 ...
For   (interi,stringa)Da console interattiva:>>> range(3)        # funzione che torna una[0,1,2]             # lista di N ...
For   (lista,tupla)Da console interattiva:>>>   for x in [1,2,3]:print x =,x...x =   0              # ciclo di una listax ...
For   (dizionari)Da console interattiva:>>> d={a:1,b:2} # creo un dizionario>>> for x,y in d.items():print foo =,x,y...foo...
Omega-NDa console interattiva:>>> flg = 2          # flag di ctrl>>> while True:                       do A...     print e...
Assert# listruzione assert verifica che una# determinata condizione sia vera# durante lesecuzione del programma# altriment...
Potenzialita                             di python:- puo operare con le matrici.- puo graficare dati.- puo plottare in tri...
Le librerie                (packages)In python librerie significa:       files di script raccolti in ordine tipologico chi...
Numeric* permette di lavorare efficientemente con grandiquantita di dati organizzati in tabelle e matrici (array).* veloci...
PyLab     (plot 2d)*   disegnare grafici bidimensionali*   standalone con toolbar integrati (zoom, pan, ecc.)*   Esportazi...
SciPySi appoggia a Numeric e pyLab puo esser visto come un completamento dei primi 2.* vettori, tensori, trasformazioni......
symPy(calcolo simbolico)*   aritmetica di base *,/,+,-,***   semplificazioni (a*b*b+2*b*a*b) → (3*a*b^2)*   espansioni ((a...
Python Image Library (pil)* Permette lelaborazione di immagini da Python.* Sono supportati i piu diffusi formati di immagi...
Astrofisica*   PyRAF     trattamento dei dati, array, immagini*   PyAstro    set di funzioni utili per calcoli astronomici...
Fisica Atomica e Molecalare* MMTK toolkit di modellazione molecolare* PyMOL visualizzazione 3d, rendering, ecc* Vmd   visu...
VpythonReal-time 3D Graphics (Interactive Scenes)
Interfaccie grafiche              <- PyGtk                         pyQt4 ->                         <- Tkinter(tlc/tk)WxPy...
FineRiferimenti locali:- www.velug.it                                           # il sito del Velug- orcim.50webs.com     ...
Upcoming SlideShare
Loading in...5
×

2008 python

205

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
205
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

2008 python

  1. 1. PythonLinuxDay-2008 by Orcim
  2. 2. Presentazione● Michielutti Loris (nickname) Orcim● Lavoro nellambito della progettazione● Dal 1980 scrivo codice in vari linguaggi Assembler, C, C++ e progetto schede elettroniche a microprocessori● Dal 2004 mi sono avvicinato al meraviglioso mondo di Python
  3. 3. Panoramica● A cosa serve un linguaggio di programmazione● Cosa si impara programmando● Quale il miglior linguaggio● Perche Python
  4. 4. A cosa serve un Linguaggio di Programmazione● definire delle sequenza ripetibili – (sono un programmatore)● documentare e riprodurre tali sequenze – (sono un buon programmatore)● imparare ad analizzare e a scegliere le situazioni piu consone – (sono un analista)
  5. 5. Cosa si impara programmando● * Logiche ● * Precisione● * Funzioni ● * Organizzazione● * Ricorsioni ● * Comunicazione● * Astrazione ● * Collaborazione● * Algoritmi
  6. 6. Quale il miglior linguaggio?● quello che uno conosce meglio● il piu aperto possibile● il piu facile da estendere● quello che permette piu approcci al problema● quello che fornisce piu documentazione e materiale a questo punto posso affermare che per imparare a programmare python e una meraviglia.
  7. 7. perche Python?● Sintassi cristallina (50% di codice in meno, 300% piu produttivo)● Interprete interattivo (valutazione in tempo reale)● Alto livello di astrazione● Potenti strutture dati● Diversi Paradigmi (Procedurale,Funzionale,Oggetti)● Nessuna necessita di distruggere gli oggetti non piu utilizzati. (Garbage Collection)● Estendibile (scrivere componenti in C,C++,ecc)● Customizzabile (leggere componenti da C,C++,ecc)● Multi piattaforma (linux,windows,mac,ecc)
  8. 8. Caratteristiche di base attenzione Python lavora per referenza! (vedremo cosa significa)● Struttura Dati● Funzioni● Controllo di flusso
  9. 9. Struttura Dati (tipi)● Number (int,long, double) YES● Booleans YES● Characters NO● Strings YES● Arrays (su modulo esterno numpy) NI● Records NO
  10. 10. Numeri>>> a = 5 / 2 # Integer(default)>>> print a2>>> b = 10L # Long>>> print b10>>> c = a + 3.567 # Double (float)>>> print c5.567>>> x = 3 # assegnazione>>> y = x # cosa faccio qui?>>> y += 1 # chi mi sa dire quanto # vale x?print x, y # attenzione in python ci3 4 # sono pochi tipi # mutabili!
  11. 11. LogicheLe costanti booleaneFalse: 0,None,oggetti e contenitori vuoti True: not 0,oggetti e contenitori non vuoti Gli operatori di comparazione ==,!=,<,<=,etc. verifichiamo il CONTENUTO delle referenze!>>> x = 4; y = 4 # assegnamo 2 valori>>> print x == yTrue se vogliamo verificare la REFERENZA allora usiamo loperatore is>>> print x is yFalse
  12. 12. Logiche (and, or)Attenzione and e or non ritornano True e False ma il valore di una delle sotto-espressioni!X and Y and Z - se sono tutti veri ritorna Z - altrimenti ritorna il primo valore falsoX or Y or Z - se sono tutti falsi ritorna Z - altrimenti ritorna il primo valore veroTrucco per implementare la condizione ternaria lequivalente in C di (test ? val1 : val2) res = 1 > 2 and val1 or val2 - quando il test e vero ritorna val1 - quando il test e falso ritorna val2 attenzione funziona solo con val1 vero!
  13. 13. Stringhe (sono sequenze immutabili)>>> a = “ciao” # assegnazione>>> print aciao>>> b = a # copio la referenza>>> print bciao>>> a += mondo # riassegnazione>>> print a,bciao mondo ciao>>> print “bye” # stringa senza referenzabye>>> b = ciao # assegnazione multi linea>>> sono un>>> multi linea
  14. 14. Struttura Dati (avanzata)● Complex Numbers YES● Lists YES● Tuples YES● Hash tables (dizionari) YES
  15. 15. Numeri Complessi>>> a = complex(1,2) # assegnazione # usa il tipo float!>>> print a.real # parte reale1.0>>> print a.imag # parte immaginaria2.0>>> print a # visualizzazione(1+j2) # in forma complessa>>> a += (3+j4) # operazioni>>> print a(4+j6)
  16. 16. Liste (sono sequenze mutabili)>>> a = [1,a,(1+j2)] # assegn. eterogenea>>> b = list(string) # conv. di una stringa>>> print a, b # visualizzazione[1,a,(1+j2)] [s,t,r,i,n,g]>>> a += [3,4] # aggiungo N elementi>>> print a, a[1] # rifer. ad 1 elemento[1,a,(1+j2),3,4] a>>> c = b # copio la referenza>>> b.append(a) # aggiungo un elemento>>> print c[s,t,r,i,n,g,a]>>> c = b.copy() # creo una copia>>> c = b[:] # in modo esplicito
  17. 17. Tuple (sono sequenze immutabili)>>> t = (1,2,ciao,3) # assegnazione>>> print t, t[2] # visualizzazione(1,2,ciao,3) ciao>>> l = list(t) # converto in lista>>> l += [a] # aggiungo un elemento>>> print t[:-2] # visualizzo senza gli(1,2) # ultimi 2 elementi>>> print l[2:] # visualizzo dal[ciao,3,a] # 2 elemento in poi>>> print t[1:2] # visualizzo una(2,ciao) # porzione>>> n = tupla(l) # converto in tupla>>> print n(1,2,ciao,3,a)
  18. 18. Dizionari (sono mappe non sono sequenze!) vi accedo per chiave. le chiavi devono essere univoche!>>> d = {uno:1,2:due,tre:tre}>>> print d[uno] # visualizzo il valore1 # dellelemento uno>>> d[4] = ciao # nuovo elemento>>> del d[uno] # rimuovo un elemento>>> print d # visualizzazione{2:due,tre:tre,4:ciao}>>> print d.keys() # lista delle chiavi[2,tre,4]>>> print d.values() # lista dei valori[due,tre,ciao]>>> print d.items() # lista degli elementi[(2,due),(tre,tre),(4,ciao)]
  19. 19. Funzioni● Verifica dei tipi sugli argomenti NO● Parametri di default YES● Parametri per chiave YES● Parametri come funzioni YES Tutte le funzioni ritornano un valore! in caso di assenza della istruzione return la funzione torna il valore di default None In python non esite loverloading della funzione! due funzioni non possono avere lo stesso nome anche se hanno differenti argomenti!
  20. 20. Funzioni (verifica dei tipi)>>> def = foo(x): # definizione di una... print x # funzione...>>> foo(ciao) # richiamo della funzioneciao # con una stringa>>> foo(35) # richiamo della funzione35 # con un intero Nessuna verifica sui tipi dei parametri passati ? NO in realta questo e il Dynamic Typing! Se i parametri fossero stati es: foo(x,y) e la funzione print x * y python avrebbe controllato e in caso di operazione non congrua avrebbe sollevato una eccezzione! Questo e lo Strong Typing!
  21. 21. Funzioni (parametri di default)>>> x = 35 # referenzio un intero>>> def = foo(a=x): # definizione di una... print a # funzione...>>> foo(ciao) # richiamo della funzioneciao # con un parametro>>> foo() # richiamo della funzione35 # senza parametri>>> x = 10 # riassegnazione!>>> foo() # 35 o 10 ?35 # perche il parametro di # default e assegnato una # sola volta! durante listanza
  22. 22. Funzioni (parametri per chiave)>>> def = foo(x=1,y=2,z=3):... print x,y,z =,x,y,z...>>> foo() # richiamo della funzionex,y,z = 1 2 3 # senza parametri>>> foo(10) # passaggio dei parametrix,y,z = 10 2 3 # per posizione>>> foo(y=20) # passaggio dei parametrix,y,z = 1 20 3 # per chiave (nome)>>> foo(10,z=30) # passaggio dei parametrix,y,z = 10 2 30 # misto
  23. 23. Funzioni (parametri come funzioni)>>> def = foo(x=1,y=2,z=3):... print x,y,z =,x,y,z...>>> foo(*[4,5]) # passaggio dei parametrix,y,z = 4 5 3 # contenuti in una lista>>> foo(**{x:10,z:30}) # passaggio dei parametrix,y,z = 10 2 30 # contenuti in un dizion. # y=(valore di default)>>> def = pippo(x,y):... return x(y) # passaggio dei parametri... # dove x e una funzione>>> pippo(foo,9)x,y,z = 9 2 3
  24. 24. Controllo dei flussi● If then else YES● Case YES● While do YES● For YES● Omega-N YES● Assert YES
  25. 25. if then elseDa console interattiva:>>> x = 3>>> if x < 10: print ciao False True... ifciao>>> if x > 10: print ciao else then... else: print bye...bye
  26. 26. caseDa console interattiva:>>> x = 3>>> if x == 1: print uno if True do A... elif x==2: print due... elif x==3: print tre False... else: print non esistentetre>>> if True do B False
  27. 27. while doDa console interattiva:>>> x = 3>>> while x > 0: do... print x =, x... x -=1 True... ifx = 3x = 2 Falsex = 1>>>Si puo usare la chiave break per interrompereanticipatamente il loop.Si puo usare la chiave continue per saltare alciclo successivo senza eseguire le istruzionesuccessive alla chiave.
  28. 28. For (interi,stringa)Da console interattiva:>>> range(3) # funzione che torna una[0,1,2] # lista di N elementi>>> for x in range(3):print x =,x...x = 0 # ciclo di interix = 1x = 2>>> for x in ciao:print x =,x...x = c # ciclo di una stringax = ix = ax = o
  29. 29. For (lista,tupla)Da console interattiva:>>> for x in [1,2,3]:print x =,x...x = 0 # ciclo di una listax = 1x = 2>>> for x in (c,i,a,o):print x =,x...x = c # ciclo di una tuplax = ix = ax = o
  30. 30. For (dizionari)Da console interattiva:>>> d={a:1,b:2} # creo un dizionario>>> for x,y in d.items():print foo =,x,y...foo = a 1 # ciclo degli elementifoo = b 2>>> for x in d.keys():print foo =,x...foo = a # ciclo delle chiavifoo = b>>> for x in d.values():print foo =,x...foo = 1 # ciclo dei valorifoo = 2>>>
  31. 31. Omega-NDa console interattiva:>>> flg = 2 # flag di ctrl>>> while True: do A... print eseguo A... if flg <=0: break... print eseguo B... flg -=1 # omega-1 True... ifeseguo Aeseguo Beseguo A Falseeseguo B do Beseguo A>>>
  32. 32. Assert# listruzione assert verifica che una# determinata condizione sia vera# durante lesecuzione del programma# altrimenti lo interrompe!assert(x < 3) # if False exit
  33. 33. Potenzialita di python:- puo operare con le matrici.- puo graficare dati.- puo plottare in tridimensionale.- puo creare interfaccie grafiche.- puo aprire e salvare files in diversi formati.- puo gestire immagini di vari formati.- puo interagire, anche a basso livello con il Sistema Operativo e con la macchina.
  34. 34. Le librerie (packages)In python librerie significa: files di script raccolti in ordine tipologico chiamati packages.Un package non e altro che una cartella dove allinterno troviamo: i files di script (moduli) oltre al file speciale di nome: __init__.py che serve ad identificare la cartella come package.Il file speciale puo essere anche vuoto.La prima volta che si importa un modulo dal packge viene automaticamente richiamato ed eseguito il file __init__.py !Dunque si puo usare questo file per inserire delle istruzioni di preparazione al codice seguente ! Vediamo alcune librerie e le loro potenzialita:
  35. 35. Numeric* permette di lavorare efficientemente con grandiquantita di dati organizzati in tabelle e matrici (array).* velocita di calcolo enormemente superiore grazieallottimizzazione del codice e alla gestione dellamemoria.
  36. 36. PyLab (plot 2d)* disegnare grafici bidimensionali* standalone con toolbar integrati (zoom, pan, ecc.)* Esportazioni in formati vettoriali* Customizzare i grafici in qualsiasi Gui* Sintassi di base molto simile al plot di Matlab* Scrivere formule usando la sintassi Latex
  37. 37. SciPySi appoggia a Numeric e pyLab puo esser visto come un completamento dei primi 2.* vettori, tensori, trasformazioni... integrali, derivate, interpolazioni, polinomi* statistica* supporto per file di testo formattati per il Fortran* widgets per plot lineari e 3D* analisi di immagini* interfacce per il calcolo distribuito (parallelo)* elaborazione dei segnali
  38. 38. symPy(calcolo simbolico)* aritmetica di base *,/,+,-,*** semplificazioni (a*b*b+2*b*a*b) → (3*a*b^2)* espansioni ((a+b)^2) → (a^2+2*a*b+b^2)* funzioni (exp,ln,ecc)* numeri complessi* derivate* serie di taylor (laurent)* equazioni differenziali
  39. 39. Python Image Library (pil)* Permette lelaborazione di immagini da Python.* Sono supportati i piu diffusi formati di immagine. Le funzioni possibili:* visualizzare* ritagliare* filtrare* analizzare* ridimensionare* convertire* applicare filtri* ecc..
  40. 40. Astrofisica* PyRAF trattamento dei dati, array, immagini* PyAstro set di funzioni utili per calcoli astronomici* PyEphem scientific-grade astronomical computations* PyFits per leggere e scrivere il formato FITS
  41. 41. Fisica Atomica e Molecalare* MMTK toolkit di modellazione molecolare* PyMOL visualizzazione 3d, rendering, ecc* Vmd visualizzazione molecolare animata
  42. 42. VpythonReal-time 3D Graphics (Interactive Scenes)
  43. 43. Interfaccie grafiche <- PyGtk pyQt4 -> <- Tkinter(tlc/tk)WxPython →ecc..
  44. 44. FineRiferimenti locali:- www.velug.it # il sito del Velug- orcim.50webs.com # il mio sito- orciml@gmail.com # il mio indirizzoRiferimenti del linguaggio:- http://www.python.org/ # sito ufficiale- http://www.planetpython.org/ # discussioni giornaliere- http://wiki.python.org/moin/Documentation # documentazione- http://groups.google.com/group/it.comp.lang.python # gruppo di discussione- http://lists.python.it/pipermail/python/ # mail-list archivio Domande ?
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×