[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