Lezione 13-I Moduli…

Febbraio 1, 2007

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

Entry Filed under: Python. .

11 Comments Add your own

  • 1. Beppe  |  Febbraio 4, 2007 at 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
    >>>

  • 2. akus85  |  Febbraio 4, 2007 at 10:58 am

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

  • 3. Daniele  |  Febbraio 6, 2007 at 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

  • 4. Simosito  |  Febbraio 6, 2007 at 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()?

  • 5. Daniele  |  Febbraio 6, 2007 at 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

  • 6. Beppe  |  Febbraio 7, 2007 at 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”)

  • 7. akus85  |  Febbraio 7, 2007 at 8:18 am

    Grazioso questo esempio..!!

  • 8. Daniele  |  Febbraio 7, 2007 at 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

  • 9. Daniele  |  Febbraio 7, 2007 at 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

  • 10. Beppe  |  Febbraio 7, 2007 at 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.

  • 11. Daniele  |  Febbraio 8, 2007 at 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

Leave a Comment

Required

Required, hidden

Some HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Trackback this post  |  Subscribe to the comments via RSS Feed


Lezioni di Python

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

Top Posts

Archivi

Aggiunta chat…

Blogroll