<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2800.1555" name=GENERATOR></HEAD>
<BODY>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN class=770234019-26092006>Visto 
che siamo all'ABC...</SPAN></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN class=770234019-26092006>quale 
editor consigliate per Python?</SPAN></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN class=770234019-26092006>Io sto 
valutando il plugin su Eclipse, SPE e Komodo...</SPAN></FONT></DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN 
class=770234019-26092006></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial color=#0000ff size=2><SPAN 
class=770234019-26092006>Christian</SPAN></FONT></DIV>
<BLOCKQUOTE>
  <DIV class=OutlookMessageHeader dir=ltr align=left><FONT face=Tahoma 
  size=2>-----Original Message-----<BR><B>From:</B> 
  python-bounces@lists.python.it [mailto:python-bounces@lists.python.it]<B>On 
  Behalf Of </B>Fabrizio Cornelli<BR><B>Sent:</B> martedì 26 settembre 2006 
  11.22<BR><B>To:</B> Python<BR><B>Subject:</B> Re: [Python] 
  Ciao<BR><BR></FONT></DIV>Ciao Lucia,<BR>&nbsp; non saprei dirti quali errori 
  evitare, tuttavia potrei provare a suggerirti un paio di costrutti che mi sono 
  piaciuti particolarmente, significativi per capire come python si differenzi 
  da altri linguaggi più classici. Non ho nessuna pretesa di completezza, spero 
  soltanto di solleticare la fantasia. :-) <BR><BR>1) switch 
  case<BR>----------------------<BR><BR>def error():<BR>&nbsp; print 
  "errore"<BR><BR>def connect():<BR>&nbsp; print "connesso"<BR><BR>def 
  default():<BR>&nbsp; print "comando non riconosciuto" <BR><BR>cases={ 
  "CONNECT": connect, "ERROR": error}&nbsp; #associo ad una stringa una funzione 
  tramite 
  dizionario<BR>modemline=modem.readline()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 

  <DIV id=mb_5>&nbsp;&nbsp;&nbsp; # leggo una ipotetica riga dal modem 
  <BR>newstate=cases.get(modemline,default)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  # estraggo dai casi possibili la giusta funzione da chiamare, nel caso in cui 
  non ci sia viene restituita una funzione di 
  default<BR>newstate()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  # invoco la funzione <BR><BR># se ti interessa questo approccio, dai un occhio 
  alle funzioni anonime lambda, retaggio della programamzione funzionale: <A 
  onclick="return top.js.OpenExtLink(window,event,this)" 
  href="http://www.secnetix.de/%7Eolli/Python/lambda_functions.hawk" 
  target=_blank>http://www.secnetix.de/~olli/Python/lambda_functions.hawk </A>, 
  ti permettono di passare una funzione creata al volo come argomento di 
  un'altra funzione, cosa che ti permette, per esempio, di filtrare delle liste 
  o mappare <BR><BR>2) list comprehension (arriva da 
  Haskel)<BR>---------------------- 
  <BR>d=range(100)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  # creo una lista di numeri interi<BR>pari=[ n for n in d if n%2==0 ]&nbsp; # 
  creo una lista di elementi n per ogni elemento n in d che abbia la 
  caratteristica di essere pari<BR><BR># nota che pari è una lista nuova <BR># 
  oppure, più difficile:<BR><BR><FONT 
  color=#0000ff><CODE>&gt;&gt;&gt;&nbsp;</CODE></FONT><CODE>noprimes&nbsp;=&nbsp;[j&nbsp;for&nbsp;i&nbsp;in&nbsp;range(2,&nbsp;8)&nbsp;for&nbsp;j&nbsp;in&nbsp;range(i*2,&nbsp;50,&nbsp;i)]</CODE><BR><FONT 
  color=#0000ff><CODE>&gt;&gt;&gt;&nbsp;</CODE></FONT><CODE>primes&nbsp;=&nbsp;[x&nbsp;for&nbsp;x&nbsp;in&nbsp;range(2,&nbsp;50)&nbsp;if&nbsp;x&nbsp;not&nbsp;in&nbsp;noprimes]</CODE><BR><FONT 
  color=#0000ff><CODE>&gt;&gt;&gt;&nbsp;</CODE></FONT><CODE>print&nbsp;primes</CODE><BR><CODE>[2,&nbsp;3,&nbsp;5,&nbsp;7,&nbsp;11,&nbsp;13,&nbsp;17,&nbsp;19,&nbsp;23,&nbsp;29,&nbsp;31,&nbsp;37,&nbsp;41,&nbsp;43,&nbsp;47]<BR><BR>(preso 
  da <A onclick="return top.js.OpenExtLink(window,event,this)" 
  href="http://www.secnetix.de/%7Eolli/Python/list_comprehensions.hawk" 
  target=_blank>http://www.secnetix.de/~olli/Python/list_comprehensions.hawk</A>)<BR></CODE><BR>3) 
  meta programmazione spicciola:<BR>(che poi meta programmazione forse non è 
  :-)<BR>trovi una buona introduzione qui: <A 
  onclick="return top.js.OpenExtLink(window,event,this)" 
  href="http://www.onlamp.com/pub/a/python/2003/04/17/metaclasses.html" 
  target=_blank>http://www.onlamp.com/pub/a/python/2003/04/17/metaclasses.html 
  </A><BR>-----------------------<BR><BR>class Punto:<BR>&nbsp; def 
  __init__(self,d):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  # costruttore, accetta un parametro, se non è un dizionario la riga seguente 
  da errore.<BR>&nbsp;&nbsp;&nbsp; for key,value in d.items(): # per ogni chiave 
  e valore del dizionario... <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  setattr(self,key,value)&nbsp;&nbsp;&nbsp; # si associa all'oggetto un 
  attributo specificato dalla chiave del dizionario, associato al suo 
  valore<BR><BR>p=Punto({"latitudine":0,"longitudine":0})&nbsp; # si può 
  inizializzare un oggetto con attributi variabili, comodo nelle serializzazioni 
  <BR><BR>p.latitudine,p.longitudine=gps.readline().split(",") 
  <BR><BR>---------------------<BR><BR>Bon, mi fermo qui.<BR>Ciao! 
  <DIV>
  <DIV class=ea><SPAN id=e_10de99896de67359_1>- Show quoted text 
  -</SPAN></DIV><SPAN class=e id=q_10de99896de67359_1><BR><BR><BR>
  <DIV><SPAN class=gmail_quote>On 9/25/06, <B class=gmail_sendername>lucia bozzo 
  </B>&lt;<A onclick="return top.js.OpenExtLink(window,event,this)" 
  href="mailto:luciabozzo@yahoo.it" target=_blank>luciabozzo@yahoo.it</A>&gt; 
  wrote:<BR><BR></SPAN>
  <BLOCKQUOTE class=gmail_quote 
  style="PADDING-LEFT: 1ex; MARGIN: 0pt 0pt 0pt 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid">Io 
    non sono nuova ai linguaggi di programmazione:<BR>20 anni di cobol<BR>4 
    anni&nbsp;&nbsp; di visual basic<BR><BR>ma sono nuova in Python<BR><BR>chi è 
    più addentro di me in questo linguaggio, mi può consigliare quali errori 
    evitare data la mia provenienza ? <BR><BR>Grazie a 
    tutti<BR><SPAN>Lucia<BR></SPAN><SPAN><BR></SPAN></BLOCKQUOTE></DIV><BR></SPAN></DIV></DIV><BR>-- 
  <BR>Fabrizio Zeno Cornelli </BLOCKQUOTE><BR>
<HR>
La mia Cartella di Posta in Arrivo è protetta con SPAMfighter<BR>208 messaggi 
contenenti spam sono stati bloccati con successo.<BR>Scarica gratuitamente <A 
href="http://www.spamfighter.com/go.asp?t=255">SPAMfighter</A>! </BODY></HTML>