[Python] Ciao

grullonet by AliceADSL grullonet a alice.it
Mar 26 Set 2006 21:41:35 CEST


Visto che siamo all'ABC...
quale editor consigliate per Python?
Io sto valutando il plugin su Eclipse, SPE e Komodo...

Christian
  -----Original Message-----
  From: python-bounces a lists.python.it
[mailto:python-bounces a lists.python.it]On Behalf Of Fabrizio Cornelli
  Sent: martedì 26 settembre 2006 11.22
  To: Python
  Subject: Re: [Python] Ciao


  Ciao Lucia,
    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. :-)

  1) switch case
  ----------------------

  def error():
    print "errore"

  def connect():
    print "connesso"

  def default():
    print "comando non riconosciuto"

  cases={ "CONNECT": connect, "ERROR": error}  #associo ad una stringa una
funzione tramite dizionario
  modemline=modem.readline()
      # leggo una ipotetica riga dal modem
  newstate=cases.get(modemline,default)              # estraggo dai casi
possibili la giusta funzione da chiamare, nel caso in cui non ci sia viene
restituita una funzione di default
  newstate()                                                        # invoco
la funzione

  # se ti interessa questo approccio, dai un occhio alle funzioni anonime
lambda, retaggio della programamzione funzionale:
http://www.secnetix.de/~olli/Python/lambda_functions.hawk , 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

  2) list comprehension (arriva da Haskel)
  ----------------------
  d=range(100)                         # creo una lista di numeri interi
  pari=[ n for n in d if n%2==0 ]  # creo una lista di elementi n per ogni
elemento n in d che abbia la caratteristica di essere pari

  # nota che pari è una lista nuova
  # oppure, più difficile:

  >>> noprimes = [j for i in range(2, 8) for j in range(i*2, 50, i)]
  >>> primes = [x for x in range(2, 50) if x not in noprimes]
  >>> print primes
  [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]

  (preso da http://www.secnetix.de/~olli/Python/list_comprehensions.hawk)

  3) meta programmazione spicciola:
  (che poi meta programmazione forse non è :-)
  trovi una buona introduzione qui:
http://www.onlamp.com/pub/a/python/2003/04/17/metaclasses.html
  -----------------------

  class Punto:
    def __init__(self,d):            # costruttore, accetta un parametro, se
non è un dizionario la riga seguente da errore.
      for key,value in d.items(): # per ogni chiave e valore del
dizionario...
         setattr(self,key,value)    # si associa all'oggetto un attributo
specificato dalla chiave del dizionario, associato al suo valore

  p=Punto({"latitudine":0,"longitudine":0})  # si può inizializzare un
oggetto con attributi variabili, comodo nelle serializzazioni

  p.latitudine,p.longitudine=gps.readline().split(",")

  ---------------------

  Bon, mi fermo qui.
  Ciao!
  - Show quoted text -




  On 9/25/06, lucia bozzo <luciabozzo a yahoo.it> wrote:


    Io non sono nuova ai linguaggi di programmazione:
    20 anni di cobol
    4 anni   di visual basic

    ma sono nuova in Python

    chi è più addentro di me in questo linguaggio, mi può consigliare quali
errori evitare data la mia provenienza ?

    Grazie a tutti
    Lucia





  --
  Fabrizio Zeno Cornelli


----------------------------------------------------------------------------
----
La mia Cartella di Posta in Arrivo è protetta con SPAMfighter
208 messaggi contenenti spam sono stati bloccati con successo.
Scarica gratuitamente SPAMfighter!
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: http://lists.python.it/pipermail/python/attachments/20060926/b7009d08/attachment.html


Maggiori informazioni sulla lista Python