Lezione 13-I Moduli…

febbraio 1, 2007 at 4:28 pm 11 commenti

Quando i programmi diventano più grossi non è buona scelta lasciare tutto su un’unico file,in quanto la gestione risulta più complicata.

Allora in questi casi conviene dividere il programma in sotto-programmi salvati in script e richiamarli nel corpo principale del nostro programma.Questi script esterni vengo chiamati moduli,già di essi ne esistono moltissimi per risolvere svariati problemi.

 

La sintassi per richiamarlo all’interno del nostro programma è:

import NomeModulo

per sapere i metodi che ha un determinato modulo direttamente dalla consolle interattiva scriviamo:

import NomeModulo

dir(NomeModulo)

ad esempio:

>>import time

>>dir(time)

[‘__doc__’, ‘__name__’, ‘accept2dyear’, ‘altzone’, ‘asctime’, ‘clock’, ‘ctime’, ‘daylight’, ‘gmtime’, ‘localtime’, ‘mktime’, ‘sleep’, ‘strftime’, ‘strptime’, ‘struct_time’, ‘time’, ‘timezone’, ‘tzname’]

usando il comando import,in pratica importiamo nel nostro programma tutte le funzioni(quelle elencate tramite il comando dir),e per richiamarne una dobbiamo utilizzare la sintassi:

NomeModulo.NomeFunzione

ad esempio se vogliamo stampare che giorno è oggi basta scrivere:

>>>import time

>>>lista=time.localtime()  #ci crea una lista con giorno,mese,anno e l’orario

 

>>>giorno=lista[2]    #estrapolo dalla lista il valore del giorno

 

se invece vogliamo importare nel nostro programma solo una funzione di un determinato modulo scriviamo:

from NomeModulo import NomeFunzione

scriviamo così:

>>>from time import daylight

>>>daylight

In questo caso dato che abbiamo importato solo una specifica funzione del modulo per richiamarla basta solo il nome della funzione.

Come potete capire non è possibile presentare tutti i moduli che sono disponibili perchè sono in numero elevato,per trovare l’elenco completo vi rimando all’indice ufficiale:http://docs.python.org/modindex.html

Annunci

Entry filed under: Python.

Lezione12-Le stringhe… Lezione 14-Introduzione alla programmazione ad oggetti…

11 commenti Add your own

  • 1. Beppe  |  febbraio 4, 2007 alle 8:59 am

    “ad esempio se vogliamo stampare che giorno è oggi basta scrivere:”

    >>>import time

    >>>time.daylight

    Sicuro?

    Python 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit (Intel)] on win
    32
    Type “help”, “copyright”, “credits” or “license” for more information.
    >>> import time
    >>> dir(time)
    [‘__doc__’, ‘__name__’, ‘accept2dyear’, ‘altzone’, ‘asctime’, ‘clock’, ‘ctime’,
    ‘daylight’, ‘gmtime’, ‘localtime’, ‘mktime’, ‘sleep’, ‘strftime’, ‘strptime’, ‘s
    truct_time’, ‘time’, ‘timezone’, ‘tzname’]
    >>> time.daylight
    1
    >>>

    Rispondi
  • 2. akus85  |  febbraio 4, 2007 alle 10:58 am

    L’ho sistemato…in effetti daylight non restituisce il giorno…

    Rispondi
  • 3. Daniele  |  febbraio 6, 2007 alle 3:21 pm

    “>>>lista=time.localtime() #ci crea una lista con giorno,mese,anno e l’orario”

    io qui metterei in ordine l’output:

    “>>>lista=time.localtime() #ci crea una lista con: anno, mese, giorno, ore, minuti, secondi, giorno della settimana, …”

    In questo modo il comando seguente diventa più comprensibile.

    Ciao

    Daniele

    Rispondi
  • 4. Simosito  |  febbraio 6, 2007 alle 6:32 pm

    E se si tratta di importare un file py semplice si fa
    import xxx.py?
    e se si fa così, come lo si richiama?
    xxx.py.funzione()
    o
    xxx.funzione()?

    Rispondi
  • 5. Daniele  |  febbraio 6, 2007 alle 8:50 pm

    E se si tratta di importare un file py semplice si fa
    import xxx.py?

    I moduli *sono* file “py semplici”…

    import xxx

    xxx.funzione()

    Ciao

    Daniele

    Rispondi
  • 6. Beppe  |  febbraio 7, 2007 alle 4:17 am

    Per rendere più compresibile ed usabile la chiamata a time.localtime() ,prendendo lo spunto dal post di Daniele ed applicando le nozioni delle lezioni precedenti ho scritto questo.
    Se qualcuno lo vuole migliorare…
    Le due funzioni convertono i dati del mese e del giorno della settimana da numeri a stringhe.

    import time
    Tempo=time.localtime()

    def Mese(x):
    Mesi = [‘Gennaio’,’Febbraio’,
    ‘Marzo’,’Aprile’,
    ‘Maggio’, ‘Giugno’, ‘Luglio’,
    ‘Agosto’,’Settembre’,’Ottobre’,’Novembre’,’Dicembre’]

    return Mesi[x]

    def Giorno(x):
    Giorni = [“Lunedi’”,”Martedi’”,
    “Mercoledi’”,”Giovedi’”,
    “Venerdi’”, “Sabato”, “Domenica”]

    return Giorni[x]

    print “Oggi e'”
    print Giorno(Tempo[6]-1),Tempo[2],Mese(Tempo[1]-1),Tempo[0]
    print ‘e sono le ‘
    print Tempo[3],’:’,Tempo[4],’:’,Tempo[5]

    raw_input(“Premere enter per uscire”)

    Rispondi
  • 7. akus85  |  febbraio 7, 2007 alle 8:18 am

    Grazioso questo esempio..!!

    Rispondi
  • 8. Daniele  |  febbraio 7, 2007 alle 11:54 am

    Una osservazione…

    La definizione di Mesi e Giorni la lascerei fuori dalle funzioni, considerandole come delle costanti.


    import time

    MESI = [’Gennaio’, 'Febbraio’, ‘Marzo’, 'Aprile’,
    ‘Maggio’, ‘Giugno’, Luglio’, ‘Agosto’, 'Settembre’,'Ottobre’,'Novembre’,'Dicembre’]

    GIORNI = [”Lunedi’”, ”Martedi’”, “Mercoledi’”,”Giovedi’”,
    “Venerdi’”, “Sabato”, “Domenica”]

    Tempo=time.localtime()

    def Mese(x):
    return MESI[x]

    def Giorno(x):
    return GIORNI[x]

    print “Oggi e’”
    print Giorno(Tempo[6]-1),Tempo[2],Mese(Tempo[1]-1),Tempo[0]
    print ‘e sono le ‘
    print Tempo[3],’:',Tempo[4],’:',Tempo[5]

    raw_input(”Premere enter per uscire”)

    Ciao

    Daniele

    Rispondi
  • 9. Daniele  |  febbraio 7, 2007 alle 12:00 pm

    “>

    Perché non venga persa l’indentazione, ho cercato di usare il tag ma sembra che abbia fatto effetto solo nella prima riga seguente il tag stesso...

    Come si usa?

    Grazie

    Daniele

    Rispondi
  • 10. Beppe  |  febbraio 7, 2007 alle 5:27 pm

    Applichiamo la tecnica di importazione dei moduli.
    Dividiamo l’esempio precedente in due file e li salviamo nella stessa directory.
    Il primo file lo chiamiamo Data.py

    ‘************************************************
    import time
    import Dati
    Tempo=time.localtime()

    print “Oggi e'”
    print Dati.Giorno(Tempo[6]-1),Tempo[2],Dati.Mese(Tempo[1]-1),Tempo[0]
    print ‘e sono le ‘
    print Tempo[3],’:’,Tempo[4],’:’,Tempo[5]

    raw_input(“Premere enter per uscire”)

    ‘************************************************
    il secondo file (modulo) che importeremo nel primo lo chiamiamo Dati.py e ci mettiamo le funzioni e le variabili per convertire i mesi ed i giorni della settimana

    ‘************************************************
    Mesi = [‘Gennaio’,’Febbraio’,
    ‘Marzo’,’Aprile’,
    ‘Maggio’, ‘Giugno’, ‘Luglio’,
    ‘Agosto’,’Settembre’,’Ottobre’,’Novembre’,’Dicembre’]

    Giorni = [“Lunedi’”,”Martedi’”,
    “Mercoledi’”,”Giovedi’”,
    “Venerdi’”, “Sabato”, “Domenica”]
    def Mese(x):
    return Mesi[x]

    def Giorno(x):
    return Giorni[x]
    ‘************************************************
    Lanciamo il primo file ed il gioco è fatto.
    Nota che per lanciare le funzioni delmodulo importato le devo chiamare così
    Dati.Giorno(Tempo[6]-1)
    e non
    Giorno(Tempo[6]-1)
    cioè devo anteporre il nome del modulo che contiene la funzione.
    P.S.
    Come suggerito da Daniele adesso le liste dei giorni e dei mesi sono fuori dalle funzioni.

    Rispondi
  • 11. Daniele  |  febbraio 8, 2007 alle 6:09 pm

    Giusto per giocare con gli interessanti stimoli che mi avete dato, presento una rielaborazione della libreria data.py:

    —8
    “””
    Modulo che incapsula alcune funzioni del modulo time.py.
    “””

    import time

    # Costanti

    MESI = [‘Gennaio’, ‘Febbraio’, ‘Marzo’, ‘Aprile’,
    ‘Maggio’, ‘Giugno’, ‘Luglio’, ‘Agosto’,
    ‘Settembre’,’Ottobre’, ‘Novembre’, ‘Dicembre’]

    GIORNI = [‘Lunedì’, ‘Martedì’, ‘Mercoledì’, ‘Giovedì’,
    ‘Venerdì’, ‘Sabato’, ‘Domenica’]

    MINUTO=60
    ORA=3600
    GIORNO=ORA*24

    # Funzioni

    def anno(t):
    return t[0]

    def mese(t):
    return t[1]

    def giorno(t):
    return t[2]

    def ore(t):
    return t[3]

    def minuti(t):
    return t[4]

    def secondi(t):
    return t[5]

    def mesel(t):
    “””Mese lungo.”””
    return MESI[t[1]-1]

    def giornos(t):
    “””Giorno della settimana.”””
    return GIORNI[t[6]]

    def datalunga(tempo=None):
    “””Nel formato: giorno settimana, giorno, mese lungo, anno.”””
    t=time.localtime(tempo)
    return “%s %s %s %s” % (giornos(t), giorno(t), mesel(t), anno(t))

    def orario(tempo=None):
    “””Nel formato: ore:minuti:secondi.”””
    t=time.localtime(tempo)
    return “%s:%s:%s” % (ore(t), minuti(t), secondi(t))

    —8
    import time, data

    print “oggi è:”, datalunga()
    print “dieci giorni fa era:”, datalunga(time.time()-10*GIORNO)
    print “fra dieci giorni sarà:”, datalunga(time.time()+10*GIORNO)
    print “ore:”, orario()
    print “dieci ore e mezza fa erano le:”, orario(time.time()-10.5*ORA)
    print “fra dieci ore saranno le:”, orario(time.time()+10*ORA)

    —8

    Rispondi

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Trackback this post  |  Subscribe to the comments via RSS Feed


IL FORUM E’ ATTIVO..!!!

pythonlab adesso ha il suo forum all'indirizzo: Pythonlab-forum

Python s60..

8.MODULO E32 21-03-07 Ultimo aggiornamento

Blog Stats

  • 87,029 hits

Archivi

Aggiunta chat…


%d blogger hanno fatto clic su Mi Piace per questo: