[Python] eseguire un programma in python... aiuto!

Sandro Dentella sandro a e-den.it
Ven 10 Nov 2006 12:17:44 CET


premessa su ipython

  credo che per imparare sia di grandissimo aiuto ipython con una shell
  interattiva che però ha anche completamento, completa rispetto ai metodi,
  ha un sacco di funzioni che ti permetto di *capire* la struttura di
  python, non ho mai usato windows, ma credo che ci sia anche per windows.
  No kidding: provalo!

problema import reload

  credo che l'errore di fondo che stai facendo sia di non cogliere la
  differenza fra script e modulo. Entrambe hanno la loro ragion d'essere ma
  non devono essere confusi. Spesso poi dentro un modulo si mette una parte
  che dice sostanzialmente questo (se mi stai eseguendo come script fai
  lancia questo comando (if __name__ = '__main__'...)

  Se importi un modulo stai dicendo al tuo programma "impara delle
  definizioni da li" è vero che queste definizioni sono codice python e che
  quindi possono anche eseguire "cose" ma la logica è che debbono solo
  inizializzare una situazione e rendere disponibili delle funzioni/classi.

  Il comando reload serve per fare rileggere il modulo, ma ha senso se il
  modulo è cambiato da prima.

  Quello che tu vuoi fare credi sia di creare delle funzioni e poi
  eseguirle, esempio:

  miomodulo.py
  
  def somma():
      print 1 + 1

  ora da ipython:

      In [1]: import miomodulo

      In [2]: miomodulo.somma()
      2

problema di import 
  anche io ci ho messo un po' a capire come funziona (e c'è ancora qualche
  costrutto che non mi è chiarissimo: getattr(__import__...)), ma le cose
  fondamentali mi pare che siano:

  1.  puoi importare oggetti differenti: pacchetti, moduli,
      funzioni/classi/variabili 

  2.  l'importazione comporta che l'oggetto importato è ora disponibile nello
      "scopo" corrente, ovvero è visibile (ed usabile). A seconda di come è
      stato importato puoi dovere usare un nome od un altro per
      referenziarlo:

      import datetime
      natale = datetime.date(2006,12,25)

      from datetime import date
      natale = date(2006,12,25)
      
      oppure
      from datetime import date as miadata
      natale = miadata(2006,12,25)
      
  3.  import sqlkit.db

      import il modulo db del pacchetto sqlkit 
      (ecco perché 'import modulo.py' ti falliva!)
      L'estenzion .py non va messa nell'import


  se usi ipython dopo che che hai fatto un import puoi vedere cosa è diventato
  disponibile:

     In [5]: datetime.--Tabulazione--
     datetime.__class__         datetime.MINYEAR
     datetime.date              datetime.__name__
     datetime.datetime          datetime.__new__
     datetime.datetime_CAPI     datetime.__reduce__
     datetime.__delattr__       datetime.__reduce_ex__
     datetime.__dict__          datetime.__repr__
     datetime.__doc__           datetime.__setattr__
     datetime.__file__          datetime.__str__
     datetime.__getattribute__  datetime.time
     datetime.__hash__          datetime.timedelta
     datetime.__init__          datetime.tzinfo
     datetime.MAXYEAR
  
  4. from xyz import mno

     può significare
     a. dal pacchetto xyz importa il modulo mno
     b. dal modulo xyz importa la funzione mno
     c. altro? 

  c'è molto di più su import ma non vorrei farti fare indigestione...

bonne courage!
sandro
*:-)


-- 
Sandro Dentella  *:-)
http://www.tksql.org                    TkSQL Home page - My GPL work


Maggiori informazioni sulla lista Python