Accademia:Log 2011 03 20

Versione del 22 mar 2011 alle 13:00 di Stemby (discussione | contributi) (aggiungo pezzo iniziale)
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

Su IRC

[21:47:49] <Stemby> allora, iniziamo?
[21:47:55] <Stemby> ci sono domande?
[21:47:56] <amosse> certo
[21:48:00] <spirit> vai
[21:48:10] <amosse> no
[21:48:24] <spirit> no
[21:48:24] <amosse> ah si una
[21:49:24] <amosse> come si fa in un loop ad parrase al prossimo elemento al verificarsi di una condizione, esiste qualcosa del tipo next?
[21:49:49] <groll> continue
[21:50:08] <amosse> continue riparte da capo
[21:50:27] <amosse> non dal prossimo elemento
[21:50:32] <groll> no va al prossimo elemento del ciclo
[21:50:45] <Stemby> amosse: non ho capito la domanda
[21:51:01] <amosse> esempio:
[21:52:07] <Stemby> amosse: se è lungo, scriviamolo su gobby
[21:53:00] <amosse> ho un dict non n elementi, devo verificare che l' utente abbia caricato tutti i .values, scorrendoli se mi accorgo che ne ha caricato uno passo al successivo, non all'iniziale
[21:53:33] <Stemby> continuo a non capire
[21:53:38] <Stemby> andiamo su gobby?
[21:53:46] <amosse> ok
[21:53:57] <groll> comunque con continue non riparti dall'inizio
[21:54:21] <groll> vai all'inizio del ciclo con l'elemento successivo
21:56:31 < |Wolf|> c'è il corso?
21:56:59 < amosse> si siamo su gobby
21:57:05 < Ernestus> arrivo su gobby
21:57:26 < Ernestus> Stemby, ma il tuo indirizzo di gobby è sempre attivo?
21:57:36 < Stemby> sì Ernestus
21:57:58 < Ernestus> ottimo
21:58:07 < Stemby> questo non ti autorizza ad usarlo impropriamente... :p
21:58:17 < Stemby> (altrimenti adotterò contromisure severe)
22:08:01 < Ernestus> nono tranquillo, l'ho usato per fare una pagina del wiki
22:40:34 < Stemby> ok, dopo il programmino, cerchiamo di riprendere la lezione
22:40:48 < Ernestus> eccomi
22:40:53 < Stemby> riguardo a quanto fatto finora, ci sono domande?
22:41:00 < amosse> ok funziona benissimo
22:41:16 < spirit> per ora no..
22:41:39 < amosse> il codice che avete scritto non é facilissimo, me lo devo un po' masticare
22:41:46 < Stemby> vi siete esercitati con le liste?
22:41:55 < amosse> si
22:42:05 < groll> amosse: beh ask finchè non sai le eccezioni lascialo perdere
22:42:15 < amosse> ok
22:42:31 < Stemby> if __name__ == '__main__':
22:42:37 < Stemby> quella riga è chiara?
22:42:41 < Stemby> immagino di no
22:42:43 < amosse> non
22:42:52 < Stemby> è un trucchetto
22:43:03 < Stemby> __name__ è una variabile speciale
22:43:03 < amosse> puoi spiegare
22:43:24 < Stemby> (tutti gli oggetti che sono circondati da __ sono oggetti speciali)
22:43:43 < Ernestus> e che vantaggi hanno?
22:43:54 < Stemby> non hanno vantaggi
22:43:59 < Stemby> son creati dall'interprete
22:44:18 < Stemby> se avete usato il debugger, li dovreste aver visti
22:44:28 < Stemby> avete provato il debigger?
22:44:34 < Stemby> *debugger
22:44:48 < amosse> no io non ho letto il capitolo
22:44:50 < spirit> Si.Solo oggi. Ma cercavo di capire il cap.8. Il diagramma di flusso. Cioè la creazione di un idea.
22:44:56 < Stemby> male amosse
22:44:59 < Ernestus> esatto quello dell'impiccato
22:45:02 < amosse> lo faccio per la prox
22:45:08 < Stemby> spirit: quello non l'abbiamo ancora fatto
22:45:13 < Stemby> è per la prossima volta
22:45:17 < spirit> Ah..
22:45:33 < Stemby> tra l'altro dovevo dirvi un po' di cosucce a riguardo
22:45:39 < Stemby> tornando a __name__
22:46:00 < Stemby> come dicevo, è una variabile creata dall'interprete
22:46:25 < Stemby> quando vale '__main__', significa che si sta eseguendo quel modulo
22:46:35 < Stemby> è una semplice stringa
22:46:40 < Stemby> con quel contenuto
22:47:07 < Stemby> quindi se eseguite quel modulo (come al solito), la variabile __name__ assumerà quel valore
22:47:35 < Stemby> dunque il blocco di codice che segue l'if, verrà eseguito SOLO quando si esegue il modulo
22:47:55 < spirit> Bello comunque, per quel poco che ho fatto, il debugger.
22:47:56 < Stemby> se invece il modulo viene importato, quel blocco verrà ignorato
22:48:19 < Stemby> chiaro, amosse?
22:48:33 < groll> notte
22:48:37 < Stemby> per chiarire
22:48:41 < amosse> se eseguiamo il modulo mortgage2.py?
22:48:46 < Stemby> ciao groll, e grazie
22:48:49 -!- groll [~groll@Azzurra=1779B648.48-151.net24.it] has quit [Read/Dead Error: Input/output error]
22:48:51 < Ernestus> notte 
22:48:53 < Stemby> ?
22:49:07 < Ernestus> non viene ignorato
22:49:12 < Stemby> il modulo l'hai chiamato mutuo.py
22:49:30 < Ernestus> se importa il modulo, ignora l'oggetto
22:49:36 < Stemby> no
22:49:38 < amosse> si scusa intendevo quello
22:49:40 < Stemby> ignora il blocco
22:49:48 < Stemby> allora
22:50:03 < Stemby> quando importate un modulo, per prima cosa quel modulo viene eseguito
22:50:06 < Stemby> ovvero:
22:50:19 < Stemby> se scrivete un modulo pippo.py
22:50:27 < Stemby> contenente solo:
22:50:33 < Stemby> print('pippo')
22:50:40 < Stemby> e lo importate con
22:50:44 < Stemby> import pippo
22:51:05 < Stemby> vedrete che quella riga viene eseguita
22:51:15 < Stemby> e quindi verrà stampato 'pippo'
22:51:41 < Stemby> però in genere, quando si importa un modulo, si vuole evitare questo comportamento
22:51:53 < Stemby> si vuole avere a disposizione i vari oggetti
22:52:02 < Stemby> e nient'altro
22:52:32 < Stemby> le funzioni ormai dovreste sapere che non vengono mai eseguite
22:52:47 < Stemby> per eseguirle, bisogna chiamarle
22:53:03 < Stemby> in mutuo.py abbiamo alcune funzioni
22:53:24 < Stemby> se importiamo quel modulo, le funzioni vengono definite, ma non vengono eseguite
22:53:36 < Stemby> perché le chiamate sono protette da quel trucchetto
22:53:46 < Stemby> la riga if __name__ == '__main__':
22:53:53 < Stemby> chiaro ora?
22:54:26 < Stemby> Ernestus: ?
22:54:28 < Stemby> amosse: ?
22:54:31 < amosse> quindi con quel sistema
22:54:33 < Stemby> spirit: ?
22:54:51 < spirit> cercavo di capire..
22:54:54 < Ernestus> sisi
22:55:13 < amosse> le funzioni vengono automaticamente chiamate...?
22:55:25 < amosse> giusto?
22:55:53 < Stemby> no
22:55:54 < amosse> quando faccio girare mutuo.py
22:56:13 < Stemby> quando fai girare mutuo.py è come se l'if non esistesse
22:56:22 < Stemby> e il blocco seguente non fosse indentato
22:56:42 < Stemby> quando invece importi il modulo, è come se non esistesse niente
22:56:43 < amosse> ah..
22:57:05 < Stemby> né l'if, né il blocco
22:57:29 < amosse> ok
22:57:37 < Stemby> ottimo
22:57:48 < Stemby> è un trucchetto usatissimo
22:57:54 < Stemby> direi praticamente sempre
22:58:13 < Stemby> in questo modo le funzioni possono essere usate anche da altri programmi
22:58:17 < Stemby> senza interferenze
22:58:23 < spirit> ok
22:58:34 < Stemby> basta importare il modulo
22:58:43 < Ernestus> e mettere la variabile
22:58:47 < Ernestus> in mezzo ai trattini
22:58:50 < Ernestus> giusto?
22:58:50 < Stemby> ?
22:58:51 < Stemby> no
22:59:08 < Stemby> Ernestus: mi sa che non hai capito...
22:59:19 < Ernestus> facciamo un esempio con il modulo pippo
22:59:20 < Ernestus> ?
22:59:24 < Stemby> ok
22:59:27 < Ernestus> import pippo
22:59:31 < Ernestus> print("pippo")
22:59:43 < Stemby> allora
22:59:51 < amosse> ma scusa anche con import possono essere usate anche da altri utenti...?
22:59:54 < Stemby> tutti voi avete IDLE installato?
23:00:05 < amosse> si
23:00:10 < Stemby> ottimo
23:00:14 < Ernestus> si
23:00:20 < Stemby> facciamo così
23:00:24 < Stemby> doodle
23:00:27 < Stemby> no, sorry
23:00:32 < Stemby> volevo dire: gobby
23:16:01 -!- Ernestus [~ernesto@Azzurra-667A47D2.25-79-r.retail.telecomitalia.it] has quit [Quit: Ex-Chat]

Su Gobby

[23:17:50] <Ernestus> io adesso vado. stemby per mercoledì faccio il 7 capito e nel forum faccio eventuali domani
[23:18:06] <Ernestus> *domande. buona notte e proseguimento di corso
[23:18:13] <Stemby> Ernestus: non solo
[23:18:19] <Ernestus> più l'8?
[23:18:22] <Stemby> devi fare anche i compiti per la prossima volta
[23:18:28] <Stemby> esatto
[23:18:29] <amosse> ciao Ern
[23:18:37] <Stemby> guarda anche il log irc
[23:18:48] <Ernestus> sarà fatto. ciao!
[23:18:51] Ernestus è uscito
[23:19:06] <Stemby> amosse: hai risolto?
[23:19:07] <amosse> spirit: e allora come faccio ad uscire?
[23:19:22] <Stemby> non ho capito in che situazione ti trovi
[23:19:28] <spirit> devi chiudere il debugger non idle
[23:19:44] <amosse> ho chiuso prima idle, 
[23:20:11] <spirit> va bene lo stesso..anche a me è successo oggi
[23:20:12] <Stemby> il bottone Quit 
[23:20:21] <Stemby> nel debigger
[23:20:25] <Stemby> *debugger
[23:20:33] <amosse> non funziona
[23:20:46] <Stemby> killalo brutalmente
[23:21:11] <spirit> guarda le finestre aperte..
[23:21:18] <Stemby> killall python3
[23:21:30] <amosse> ok
[23:21:37] <amosse> fatto
[23:21:49] <Stemby> ok
[23:22:03] <amosse> ok
[23:22:04] <Stemby> allora, abbiamo capito perché non cambia quasi niente?
[23:22:39] <spirit> non tanto
[23:22:39] <Stemby> perché la variabile __name__ vale proprio '__main__'
[23:22:52] <amosse> ok
[23:22:53] <Stemby> l'hai visto, nel debugger, no?
[23:23:08] <spirit> ok
[23:23:17] <Stemby> __name__ == '__main__' è dunque vero
[23:23:29] <Stemby> quindi il blocco viene eseguito
[23:23:37] <Stemby> e si torna nella situazione precedente
[23:23:43] <spirit> già, è vero.
[23:23:51] <Stemby> ora:
[23:24:07] <Stemby> torniamo alla situazione di prima
[23:24:10] <Stemby> ci siete?
[23:24:17] <amosse> si
[23:24:21] <spirit> si
[23:24:27] <Stemby> provate ad importare il modulo
[23:24:34] <Stemby> anche dalla shell interattiva
[23:24:59] <Stemby> >>> import pippo
[23:24:59] <Stemby> pippo
[23:24:59] <Stemby> ciao
[23:24:59] <Stemby> 
[23:25:07] <Stemby> giusto?
[23:25:46] <spirit> a me non dà niente
[23:25:54] <Stemby> hai fatto import pippo?
[23:26:02] <Stemby> e, soprattutto, hai salvato il file
[23:26:03] <spirit> si 
[23:26:05] <Stemby> pippo.py
[23:26:09] <Stemby> all'ultima versione
[23:26:10] <spirit> si
[23:26:13] <Stemby> con if commentato
[23:26:17] <Stemby> e senza indentazione
[23:26:28] <spirit> aspetta..lo risalvo
[23:26:32] <Stemby> eh...
[23:27:02] <spirit> nada..
[23:27:06] <Stemby> cosa nada
[23:27:09] <Stemby> impossibile
[23:27:13] <Stemby> sbagli qualcosa
[23:28:02] <spirit> faccio import pippo e non restituisce niente
[23:28:17] <Stemby> impossibile
[23:28:24] <amosse> anche a me
[23:28:33] <Stemby> anche a te non restituisce niente?
[23:28:39] <amosse> ho copiato pippo.py
[23:28:46] <amosse> poi import pippo
[23:28:49] <Stemby> a che versione?
[23:28:52] <amosse> si ferma
[23:29:06] <Stemby> si ferma... in che senso?
[23:29:17] <spirit> ho anche pippo.pyc..che avevamo visto come bytecode
[23:29:32] <Stemby> allora, rifacciamo da capo
[23:29:37] <Stemby> cancellate quel file
[23:29:49] <Stemby> risalvate il file
[23:29:55] <Stemby> quello che c'è qui
[23:30:09] <Stemby> poi, dalla directory in cui si trova il nuovo file:
[23:30:18] <Stemby> python3
[23:30:25] <Stemby> >>> import pippo
[23:30:49] <Stemby> fatto?
[23:30:54] <spirit> si è ok
[23:31:07] <Stemby> amosse?
[23:31:40] <amosse> scusa
[23:31:48] <amosse> ho salvato il file
[23:31:58] <amosse> entro della dir del file
[23:33:02] <amosse> ok
[23:33:06] <Stemby> alleluia
[23:33:13] <Stemby> ora:
[23:33:26] <Stemby> fate la stessa cosa
[23:33:46] <spirit> ..niente
[23:33:50] <Stemby> esatto
[23:33:58] <amosse> import pippo
[23:34:05] <Stemby> non dovrebbe dare niente
[23:34:23] <Stemby> però il modulo è importato
[23:34:28] <Stemby> infatti:
[23:34:30] <amosse> Traceback (most recent call last):
[23:34:30] <amosse>   File "<stdin>", line 1, in <module>
[23:34:30] <amosse> ImportError: No module named pippo
[23:34:30] <amosse> 
[23:34:43] <Stemby> >>> pippo.ciao()
[23:34:43] <Stemby> 'ciao'
[23:34:43] <Stemby> 
[23:35:00] <Stemby> amosse: sei nella directory giusta?
[23:35:04] <amosse> si
[23:35:06] <spirit> vero
[23:35:25] <Stemby> amosse: evidentemente no
[23:35:34] <Stemby> rifai da capo
[23:35:39] <amosse> ok
[23:35:40] <Stemby> chiudi la shell interattiva
[23:35:46] <Stemby> cancella il file
[23:35:50] <Stemby> risalva il file
[23:35:55] <Stemby> rientra in python3
[23:36:00] <Stemby> import pippo
[23:36:22] <amosse> riprovo
[23:37:15] Stemby has created a new document: test_pippo.py
[23:38:13] <Stemby> amosse: ce l'hai fatta?
[23:38:50] <Stemby> ohhh!!!!
[23:38:59] <Stemby> (vorrei anche andare a nanna,,,)
[23:40:08] <amosse> ok
[23:40:12] <amosse> ci sono
[23:40:16] <Stemby> fatto?
[23:40:23] <amosse> impot pippo ok
[23:40:27] <Stemby> ok
[23:40:41] <Stemby> chiaro il funzionamento di quella riga, ora?
[23:40:58] <amosse> ok
[23:41:05] <Stemby> quando importate il modulo, __name__ non vale '__main__'
[23:41:22] <Stemby> quindi quelle righe del blocco vengono ignorate
[23:41:29] <Stemby> ho appena scritto un nuovo modulo
[23:41:34] <Stemby> test_pippo.py
[23:41:36] <spirit> ok..
[23:41:46] <amosse> ok
[23:41:51] <Stemby> che in pratica fa quello che avete provato nella shell
[23:42:08] <Stemby> provate ad analizzare quel modulo col debugger
[23:42:23] <Stemby> ovviamente mettetelo nella stessa directory di pippo.py
[23:42:46] <Stemby> fatelo uno step alla volta
[23:42:56] <Stemby> così finirete dentro al modulo pippo
[23:43:11] <Stemby> alla chiamata di pippo.ciao()
[23:43:24] <Stemby> e potrete verificare il valore della variabile main
[23:43:31] <Stemby> __name__, volevo dire
[23:44:24] <Stemby> avete visto?
[23:44:37] <Stemby> qual è il valore di __name__?
[23:45:03] <spirit> main
[23:45:06] <Stemby> no
[23:45:23] <Stemby> quando entrate nel modulo pippo
[23:45:32] <Stemby> allora, rifacciamo da capo
[23:45:41] <Stemby> avete salvato test_pippo.py?
[23:45:45] <spirit> si
[23:45:52] <Stemby> apriamolo con idle
[23:45:58] <spirit> fatto
[23:45:59] <Stemby> col deugger aperto
[23:46:04] <Stemby> *debugger
[23:46:08] <spirit> fatto
[23:46:17] <Stemby> un secondo che lo faccio anch'io
[23:46:43] <Stemby> eccomi
[23:47:00] <Stemby> dovrebbe essere evidenziata la riga import pippo
[23:47:03] <Stemby> giusto=
[23:47:04] <Stemby> ?
[23:47:11] <spirit> si
[23:47:17] <amosse> si
[23:47:29] <Stemby> __name__ ovviamente vale '__main__'
[23:47:43] <amosse> ok
[23:47:46] <Stemby> perché quella è la variabile del modulo test_pippo.py
[23:47:50] <spirit> ah aspetta che ho sbagliato..
[23:48:06] <Stemby> quando ci sei fammi un fischio
[23:48:24] <amosse> _name_  '_main_'
[23:48:32] <amosse> questo?
[23:48:39] <Stemby> esatto
[23:48:43] <Stemby> ma con 2 trattini per lato
[23:48:48] <Stemby> __name__
[23:48:50] <Stemby> e
[23:48:52] <amosse> ok
[23:48:54] <Stemby> '__main__'
[23:49:07] <spirit> ci sono
[23:49:10] <Stemby> ok
[23:49:15] <Stemby> ora se premiamo step
[23:49:17] <Stemby> cosa succede?
[23:49:38] <Stemby> si finisce dentro al modulo pippo.py
[23:50:00] <Stemby> perché, come vi avevo detto, quando si importa un modulo, per prima cosa il modulo viene eseguito
[23:50:04] <Stemby> ci siete?
[23:50:08] <spirit> si
[23:50:10] <amosse> ImportError: no module named pippo
[23:50:27] <Stemby> amosse: hai salvato pippo.py nella stessa direcrory?
[23:50:37] <amosse> si
[23:50:40] <Stemby> pippo.py e test_pippo.py devono stare nella stessa dir
[23:50:54] <Stemby> amosse: evidentemente non l'hai fatto
[23:50:59] <Stemby> visto che non lo trova
[23:51:18] <amosse> moment
[23:52:44] <amosse> ok ora funziona
[23:52:48] <Stemby> bene
[23:53:00] <Stemby> qual è il valore di __name__?
[23:53:19] <amosse> __main__
[23:53:21] <Stemby> no!
[23:53:25] <Stemby> hai fatto step
[23:53:29] <amosse> si
[23:53:32] <Stemby> sei dentro pippo.py?
[23:54:03] <Stemby> dovresti essere alla riga def ciao():
[23:55:22] <Stemby> amosse...
[23:55:31] <amosse> mi sono arenato, sono un po' fuso
[23:55:41] <Stemby> sì, però non puoi bloccarci
[23:55:49] <Stemby> tieni duro 2 minuti che abbiamo finito
[23:56:04] <spirit> mala variabile name non deve essere definita con il nuovo oggetto?
[23:56:07] <amosse> andate avanti, cerco di seguire
[23:56:25] <Stemby> spirit: no
[23:56:37] <Stemby> le variabili speciali non vengono dichiarate
[23:56:46] <Stemby> vengono create automaticamente dall'interprete
[23:57:02] <Stemby> infatti mica l'abbiamo dichiarata, se noti
[23:57:04] <Stemby> però c'è
[23:57:13] <spirit> già infatti..
[23:57:16] <Stemby> spirit: dai tu la soluzione
[23:57:25] <Stemby> cosa vale __name__ in pippo.py
[23:57:33] <Stemby> (durante l'importazione)
[23:57:40] <Stemby> ?
[23:57:43] <spirit> con main
[23:57:53] <Stemby> ???
[23:58:03] <Stemby> non è difficile
[23:58:11] <Stemby> basta guardare il debugger
[23:58:16] <Stemby> cosa ti dice?
[23:58:23] <spirit> di pippo?
[23:58:31] <Stemby> ?
[23:58:36] <Stemby> non ho capito la domanda
[23:58:44] <spirit> pippo.py o te
[23:58:51] <spirit> scusa..
[23:58:53] <Stemby> rifacciamo da capo
[23:59:03] <Stemby> apriamo con idle test_pippo.py
[23:59:11] <Stemby> col debugger aperto
[23:59:13] <spirit> ci sono
[23:59:19] <Stemby> siamo alla riga import...
[23:59:23] <Stemby> giusto?
[23:59:26] <spirit> ok
[23:59:39] <Stemby> ora, se clicchiamo step, dove finiamo?
[23:59:52] <Stemby> finiamo dentro al modulo pippo.py
[23:59:59] <Stemby> perché viene importato
[00:00:03] <Stemby> e quindi eseguito
[00:00:05] <Stemby> giusto?
[00:00:19] <Stemby> dovremmo essere alla riga def ciao(): di pippo.py
[00:00:23] <Stemby> ci siamo?
[00:00:26] <spirit> ok ... ecco perchè non capivo..
[00:00:42] <Stemby> cosa vale __name__?
[00:01:02] <spirit> pippo
[00:01:06] <Stemby> 'pippo'
[00:01:10] <Stemby> è una stringa
[00:01:17] <spirit> ok
[00:01:18] <Stemby> ok?
[00:01:24] <Stemby> non vale '__main__'
[00:01:29] <Stemby> (sempre una stringa)
[00:01:33] <Stemby> ma 'pippo'
[00:01:38] <Stemby> sono 2 stringhe diverse
[00:01:55] <Stemby> quindi, se clicchiamo ancora step, dove finiamo?
[00:02:09] <spirit> a main
[00:02:24] <Stemby> torniamo al modulo test_pippo.py
[00:02:30] <Stemby> perché?
[00:02:58] <spirit> abbiamo fatto import pippo
[00:03:22] <Stemby> sì, ma il modulo pippo.py ha tante righe
[00:03:28] <Stemby> perché non sono state lette?
[00:03:41] <Stemby> è stata letta solo la riga 3
[00:03:48] <Stemby> def ciao():
[00:03:52] <Stemby> e tutte le altre?
[00:03:59] <Stemby> perché la 4 non è stata letta?
[00:04:45] <spirit> perchè richiama def
[00:04:53] <Stemby> ?
[00:05:04] <Stemby> cosa vuol dire "richiama def"?
[00:05:21] <spirit> l'  oggetto funzione
[00:05:21] <Stemby> la 4 non viene letta perché fa parte della funzione
[00:05:45] <Stemby> i blocchi delle funzioni vengono _sempre_ saltati
[00:05:50] <Stemby> non vengono mai letti
[00:05:54] <spirit> ok..
[00:06:06] <Stemby> le funzioni vengono definite, e nient'altro
[00:06:19] <Stemby> il contenuto verrà letto solo quando la funzione verrà chiamata
[00:06:25] <Stemby> e _se_ verrà chiamata
[00:06:31] <spirit> ok
[00:06:53] <Stemby> se noi scriviamo una funzione, ma non la chiamiamo mai, il contenuto della funzione non verrà mai letto
[00:07:01] <spirit> giusto
[00:07:13] <Stemby> (potrebbero anche esserci dei bug, e non ce ne accorgeremmo)
[00:07:38] <Stemby> allora, ricapitolando, la 4 viene saltata
[00:07:48] <Stemby> va alla 5
[00:08:13] <spirit> main
[00:08:21] <Stemby> ?
[00:08:28] <Stemby> va all 5
[00:08:38] <Stemby> ma anche la 5 viene saltata
[00:08:40] <Stemby> perché?
[00:09:14] <Stemby> guarda qui su gobby la riga 5 di pippo.py
[00:09:26] <spirit> vuota
[00:09:45] <Stemby> esatto
[00:09:50] <Stemby> quindi viene saltata
[00:09:53] <Stemby> allora va alla 6
[00:10:10] <Stemby> e?
[00:10:19] <spirit> torna main
[00:10:23] <Stemby> perché?
[00:10:35] <spirit> richima il modulo
[00:10:38] <Stemby> ?
[00:11:05] <spirit> è vera la condizione
[00:11:10] <Stemby> no!!!
[00:11:13] <amosse> io vi lascio, vado a dormire
[00:11:19] <amosse> ci vediamo mercoledi
[00:11:25] <spirit> 'notte amosse
[00:11:28] <Stemby> la condizione è FALSA
[00:11:32] <amosse> notte
[00:11:44] <Stemby> cosa abbiamo detto che vale __name__?
[00:12:01] amosse è uscito
[00:12:25] <Stemby> spirit
[00:12:28] <Stemby> me l'hai detto prima
[00:12:34] <Stemby> cosa vale __name__?
[00:12:37] <spirit> main
[00:12:42] <Stemby> no!!!!!!!!!!!!!!!!!!!!!!!
[00:12:50] <Stemby> l'hai letto sul debugger
[00:13:06] <Stemby> alle 00:01
[00:13:14] <Stemby> 12 minuti fa
[00:13:22] <Stemby> mi hai dato la risposta corretta
[00:13:33] <spirit> ah il modulo 'pippo'
[00:13:37] <Stemby> no!
[00:13:40] <Stemby> non è un modulo
[00:13:49] <Stemby> è il valore della variabile __name__
[00:13:56] <Stemby> __name__ vale 'pippo'
[00:14:03] <spirit> ..stringa
[00:14:06] <Stemby> sì
[00:14:11] <Stemby> una stringa
[00:14:21] <Stemby> per la precisione questa stringa: 'pippo'
[00:14:25] <Stemby> chiaro????
[00:14:31] <spirit> ok chiaro
[00:14:56] <Stemby> se facessi print(__name__), in quel punto otterresti 'pippo'
[00:15:42] <spirit> sulla shell mi da __main__
[00:15:52] <Stemby> certo!
[00:16:09] <Stemby> perché quando esegui il modulo, vale '__main__'
[00:16:13] <Stemby> sempre con gli apici
[00:16:18] <Stemby> (è una stringa)
[00:16:45] <Stemby> prova così
[00:16:53] <Stemby> dalla console
[00:17:04] <Stemby> python3 pippo.py
[00:17:07] <Stemby> e
[00:17:21] <Stemby> python3 test_python.py
[00:17:48] <spirit> aspetta che elimino e risalvo i file che se nò non dà..
[00:18:31] <Stemby> mmm, non mi funziona
[00:18:34] <Stemby> non so perché
[00:19:26] <Stemby> strano
[00:19:27] <spirit> faccio da root..
[00:19:31] <Stemby> vabbé, poco importa
[00:19:36] <Stemby> no, che c'entra
[00:19:55] <Stemby> allora
[00:20:00] <Stemby> torniamo al nostro discorso
[00:20:19] <Stemby> siamo durante l'importazione del modulo
[00:20:26] <Stemby> siamo arrivati alla riga 6
[00:20:28] <spirit> ok
[00:20:40] <Stemby> __name__ cosa abbiamo detto che vale?
[00:20:51] <spirit> 'pippo'
[00:21:01] <Stemby> quindi l'espressione cosa dà?
[00:21:14] <Stemby> 'pippo' == '__main__'
[00:21:33] <spirit> ok
[00:21:39] <Stemby> cosa ok?
[00:21:45] <Stemby> cosa dà?
[00:21:48] <spirit> ti seguivo...
[00:22:18] <spirit> ma nel debugger?
[00:22:42] <Stemby> no
[00:22:49] <Stemby> non c'è nel debugger
[00:22:55] <Stemby> il debugger salta tutto
[00:23:02] <Stemby> e stiamo cercando di capire perché
[00:23:12] <Stemby> cosa diavolo dà quell'espressione?
[00:23:26] <Stemby> 'pippo' == '__main__'
[00:23:30] <Stemby> cosa dà?????
[00:23:37] <spirit> name 
[00:23:45] <Stemby> ???????????
[00:23:54] <Stemby> provalo nell'interfaccia interattiva
[00:24:07] <Stemby> >>> 'pippo' == '__main__'
[00:24:33] <spirit> errore
[00:24:37] <Stemby> no
[00:24:41] <Stemby> non dà alcun errore
[00:24:51] <Stemby> dà un valore ben preciso
[00:25:26] <Stemby> che valore dà???
[00:25:35] <spirit> nulla
[00:25:42] <Stemby> ma come nulla!!!
[00:25:52] <spirit> da errore..non sò
[00:25:58] <Stemby> che errore ti dà?
[00:26:08] <spirit> IndentationError: unexpected indent
[00:26:14] <Stemby> spirit...
[00:26:26] <Stemby> ma ancora con questi errori???
[00:26:33] <Stemby> cosa vuol dire?
[00:26:42] <Stemby> leggi...
[00:26:48] <Stemby> IndentationError
[00:26:54] <Stemby> cosa mai vorrà dire?
[00:27:17] <Stemby> ti dà anche la spiegazione: unexpected indent
[00:27:22] <spirit> errore di identazione
[00:27:26] <Stemby> quindi?
[00:27:37] <Stemby> hai messo degli spazi all'inizio della riga
[00:28:14] <spirit> cavoli affogare in un bicchire di acqua............
[00:28:21] <Stemby> basta leggere...
[00:28:35] <spirit> risolto
[00:28:38] <Stemby> cosa ti dà?
[00:28:46] <spirit> False
[00:28:50] <Stemby> ovvio no?
[00:29:01] <Stemby> ti sembra che le due stringhe siano uguali tra loro?
[00:29:07] <spirit> certo che no
[00:29:10] <Stemby> ok
[00:29:26] <Stemby> quindi la riga 6 si rifuce a:
[00:29:29] <Stemby> if False:
[00:29:31] <Stemby> giusto?
[00:29:47] <Stemby> e quindi?
[00:29:50] <spirit> giusto
[00:29:51] <Stemby> cosa succede?
[00:30:06] <spirit> una condizione
[00:30:11] <Stemby> ?
[00:30:24] <Stemby> come funziona if?
[00:30:36] <Stemby> if espressione:
[00:30:41] <Stemby> seguito da un blocco
[00:30:56] <Stemby> se l'espressione è vera, il blocco viene eseguito
[00:31:07] <Stemby> se l'espressione è falsa, il blocco viene saltato
[00:31:09] <Stemby> giusto?
[00:31:15] <spirit> giusto
[00:31:19] <Stemby> dunque?
[00:31:27] <Stemby> l'espressione è vera o falsa?
[00:31:34] <spirit> falsa
[00:31:40] <Stemby> quindi?
[00:31:45] <spirit> return
[00:31:48] <Stemby> no!!
[00:31:53] <Stemby> dove'è return?
[00:32:16] <spirit> niente...ho sbagliato
[00:32:23] <Stemby> quindi?
[00:32:37] <Stemby> te l'ho detto qualche riga fa
[00:32:46] <Stemby> [00:31:10] <Stemby> se l'espressione è falsa, il blocco viene saltato
[00:32:59] <spirit> pensavo come..
[00:33:14] <Stemby> tu mi hai detto che l'espressione è falsa, giusto?
[00:33:17] <spirit> si
[00:33:20] <Stemby> quindi?
[00:33:38] <Stemby> quindi?
[00:33:40] <spirit> not
[00:33:42] <Stemby> ?????
[00:33:48] <Stemby> [00:31:10] <Stemby> se l'espressione è falsa, il blocco viene saltato
[00:33:55] <Stemby> tu mi hai detto che l'espressione è falsa
[00:33:58] <Stemby> quindi?
[00:34:20] <Stemby> spirit...
[00:34:34] <Stemby> [00:31:10] <Stemby> se l'espressione è falsa, il blocco viene saltato
[00:34:37] <Stemby> tu mi hai detto che l'espressione è falsa
[00:34:39] <Stemby> quindi?
[00:35:02] <spirit> da errore...
[00:35:13] <Stemby> ma che errore???????????!!!!!!!!!!!!!
[00:35:20] <Stemby> [00:31:10] <Stemby> se l'espressione è falsa, il blocco viene saltato
[00:35:27] <Stemby> tu mi hai detto che l'espressione è falsa, giusto?
[00:35:42] <spirit> si
[00:35:43] <Stemby> quindi?
[00:35:56] <Stemby> cacchiarola, leggi la mia frase!
[00:36:05] <Stemby> la risposta è lì
[00:36:06] <spirit> salta il blocco
[00:36:11] <Stemby> alleliuia!!!!
[00:36:21] <Stemby> qual è il blocco?
[00:36:26] <spirit> cercavo di capire il dopo..
[00:36:34] <Stemby> qual è il blocco?
[00:36:43] <spirit> riga 6-8
[00:36:49] <Stemby> righe 7 e 8
[00:36:56] <Stemby> la 6 non fa parte del blocco
[00:36:59] <spirit> ok
[00:37:02] <Stemby> viene letta, ma non fa niente
[00:37:07] <Stemby> quindi, ricapitolando
[00:37:13] <Stemby> legge la 3
[00:37:21] <Stemby> definisce la funzione
[00:37:25] <spirit> ok
[00:37:33] <Stemby> salta il contenuto della funzione (4)
[00:37:38] <Stemby> salta la 5 (vuota)
[00:37:44] <Stemby> legge la 6
[00:37:55] <spirit> che è falsa
[00:37:57] <Stemby> visto che l'espressione è falsa, salta la 7 e la 8
[00:38:03] <Stemby> il modulo è finiti
[00:38:06] <Stemby> *finito
[00:38:17] <spirit> ok ci sono 
[00:38:17] <Stemby> torna all'altro modullo
[00:38:24] <Stemby> *modulo
[00:38:27] <Stemby> ok
[00:38:46] <Stemby> a quel punto finisce alla riga 5 di test_pippo,py
[00:39:12] <Stemby> chiama la funzione pippo.ciao()
[00:39:27] <spirit> ho capito
[00:39:36] <Stemby> che restituisce 'ciao'
[00:39:56] <Stemby> la stringa 'ciao' viene passata alla funzione print()
[00:40:08] <Stemby> che viene eseguita e quindi la stringa viene stampata
[00:40:11] <Stemby> tutto lì
[00:40:31] <spirit> ok
[00:40:40] <Stemby> un attimo su irc e poi a nanna
[00:40:47] Stemby è uscito
[00:41:29] spirit è uscito

Da IRC

00:10:00 -!- amosse [~Mibbit@Azzurra-788D7337.252-95-r.retail.telecomitalia.it] has quit [Quit: http://www.mibbit.com ajax IRC Client]
00:39:06 < Stemby> allora
00:39:27 < Stemby> abbiamo spiegato su gobby il funzionamento del trucchetto:
00:39:39 < Stemby> if __name__ == '__main__'
00:39:45 < Stemby> spero che ora sia chiaro
00:39:54 < spirit> si 
00:39:54 < Stemby> se non lo fosse: cercate in rete
00:40:10 < Stemby> al limite lo riprendiamo la prossima volta
00:40:24 < Stemby> per la prossima volta vi darei solo il capitolo 8
00:40:27 < Stemby> è molto semplice
00:40:58 < Stemby> ma putroppo per scrivere i diagrammi non segue gli standard
00:41:14 < Stemby> vi ricordate le letture che vi avevo indicato ad inizio corso?
00:41:46 < spirit> sui diagrammi di flusso?
00:41:48 < Stemby> una delle prime lezioni, in cui abbiamo trattato il concetto di algoritmo
00:41:52 < Stemby> sì, esatto spirit
00:42:05 < Stemby> erano 2 presentazioni
00:42:14 < Stemby> (pdf di slide)
00:42:32 < Stemby> se non ve le ricordate, riprendetele
00:42:54 < Stemby> spiegavano in modo semplice come si scrive un diagramma di flusso "standard"
00:43:22 < Stemby> altra cosa: qualcuno di voi ha problemi ad utilizzare flash?
00:43:56 < Stemby> spirit: ?
00:44:01 < Stemby> risca: ?
00:44:02 < spirit> no.. non credo
00:44:09 < Stemby> ok
00:44:20 < Stemby> ho trovato una webapp molto carina
00:44:44 < Stemby> che permette di disegnare (tra le altre cose) diagrammi di flusso
00:44:53 < Stemby> purtroppo è scritta in flash
00:45:09 < Stemby> oggi abbiamo fatto una prova con gnash e non va
00:45:42 < Stemby> quindi per usarla, con ogni probabilità occorre usare il flashplayer proprietario di adobe
00:45:53 < spirit> con firefox non c'è problema, ma su konqueror fa dannare..
00:46:05 < Stemby> ok, usa firefox :)
00:46:23 < Stemby> quello che dicevo io è se hai problemi etici ad utilizzarlo
00:46:35 < spirit> in che senso?
00:46:47 < Stemby> che c'è gente che non usa software proprietario
00:46:53 < Stemby> per scelta
00:46:56 < spirit> non io
00:47:00 < Stemby> io quasi
00:47:09 < Stemby> però purtroppo il flashplayer lo uso
00:47:23 < Stemby> è uno dei pochissimi compromessi a cui scendo
00:47:40 < Stemby> (anche se mi piacerebbe riuscire a farne a meno)
00:48:07 < spirit> io provo sempre l'alternativa libera..
00:48:24 < Stemby> bon, l'applicazione è questa: http://www.gliffy.com/
00:48:32 < Stemby> prendete confidenza
00:48:47 < spirit> però flash su x86_64 non sempre va..
00:48:51 < Stemby> così la prossima volta disegnamo il diagramma del capitolo 8 come si deve
00:49:00 < Stemby> spirit: prova a vedere
00:49:09 < spirit> adesso?
00:49:12 < Stemby> no
00:49:15 < Stemby> in questi giorni
00:49:44 < spirit> bè buonanotte Stemby. Grazie per la lezione. Ciao
00:49:53 < Stemby> per provare non serve altro che il flashplayer
00:50:13 < spirit> proverò anche gnash
00:50:22 < Stemby> poi per salvare, esportare immagini, ecc. occorre indicare un indirizzo e-mail
00:50:46 < Stemby> se non si vuole passare un indirizzo vero, si può usare mailinator
00:50:54 < Stemby> oggi l'ho provato e funziona
00:51:02 < Stemby> tutto qui
00:51:04 < spirit> Va bene
00:51:07 < Stemby> riassumendo:
00:51:29 < Stemby> per la prossima volta, capitolo 8 e prendere confidenza con gliffy
00:51:33 < Stemby> notte
00:51:43 < spirit> ciao
00:52:40 < hoax> Stemby: hai mica salvato il log della chat su gobby per metterlo eventualmente sul forum?
00:52:54 -!- spirit [~root@Azzurra-C3C291C.104-82-b.business.telecomitalia.it] has quit [Quit: leaving]
00:52:55 < hoax> io mi ero disconnesso e ne ho così solo una parte
00:53:11 < hoax> http://sprunge.us/QRDi
00:54:08 < Stemby> hoax: la parte su gobby è un po' incasinata
00:54:44 < Stemby> eviterei di pubblicarla
00:55:07 < hoax> ok
00:55:15 < Stemby> all'inizio abbiamo scritto un po' meglio uno script per amosse
00:55:32 < Stemby> lì è venuto fuori il trucchetto
00:55:42 < Stemby> if __name__ == '__main__'
00:56:08 < Stemby> il resto della lezione abbiamo provato a spiegarlo
00:56:27 < Stemby> hoax: l'hai capito?
00:57:11 < Stemby> [s/n]
00:57:23 < hoax> no Stemby, non badare a me, purtroppo non sto seguendo attivamente e soprattutto non dall'inizio
00:57:36 < hoax> per questo sono particolarmente interessato ai log
00:57:53 < Stemby> quello non vale molto
00:58:14 < Stemby> perché abbiamo speso un mucchio di tempo in cose che dovevano essere già state apprese
00:58:24 < Stemby> e ormai sicure
00:58:31 < Stemby> mentre non si sono dimostrate tali...
00:58:44 < Stemby> quindi non è una buona spiegazione
00:58:53 < Stemby> se lo cerchi in rete è meglio
00:59:03 < Stemby> al limite lo riprenderemo più avanti
00:59:14 < Stemby> hoax: a che punto sei?
00:59:18 < hoax> mah, per uno che non ha proprio mai fatto python è utile, credimi
00:59:40 < Stemby> hoax: guarda, piuttosto te lo rispiego da capo
00:59:47 < Stemby> quel log non vale proprio niente
01:00:02 < Stemby> hoax: stai cercando di recuperare?
01:00:20 < hoax> non ora, ora per l'uni devo studiare C
01:00:34 < hoax> e non riesco ad essere multitasking
01:00:41 < hoax> sono molto limitato
01:01:17 < hoax> ma per il futuro è comunque una base
01:01:24 < Stemby> beh, il python è molto più semplice
01:01:33 < hoax> se volessi occuparmi di studiare Python
01:01:36 < Stemby> farai in fretta a recuperare
01:01:43 < hoax> mah, per certi versi forse
01:01:52 < hoax> per altri mi sembra più incasinato
01:02:00 < hoax> in particolare la programmazione ad oggetti
01:02:11 < hoax> mi semvra molto più facile quella procedurale
01:02:16 < Stemby> non l'abbiamo ancora affrontata
01:02:27 < Stemby> e ci vorrà ancora un po' prima che ci arriviamo
01:03:07 < Stemby> finché non è abbastanza solida la programmazione procedurale, è inutile complicarsi la vita
01:03:28 < Stemby> la programmazione orientata agli oggetti è senz'altro molto più difficile
01:03:44 < Stemby> perché bisogna decidere come implementare questi oggetti
01:04:29 < hoax> beh sì, in C c'è un qualcosa di simile agli oggetti nelle strutture, ma proprio un accenno
01:04:57 < Stemby> beh, insomma
01:05:05 < hoax> cioè tipi di dati con attributi
01:05:20 < Stemby> sì, ma non è programmazione orientata algi oggetti, quella
01:05:26 < hoax> no
01:05:30 < Stemby> gli oggetti li stiamo usando anche noi
01:05:34 < Stemby> fin dall'inizio
01:05:52 < Stemby> ma con un approccio assolutamente procedurale
01:05:59 < hoax> oo sarebbe l'uso dei metodi?
01:06:08 < Stemby> classi e metodi, sì
01:06:11 < hoax> cioè che interagiscono con gli oggetti
01:06:16 < Stemby> (e istanze, ovviamente)
01:06:19 < hoax> i quali offrono servizi
01:06:41 < Stemby> sì
01:06:47 < hoax> avevo visto qualcosa di java, ma non ci avevo capito molto
01:07:04 < Stemby> esatto, java è assolutamente orientato agli oggetti
01:07:28 < Stemby> mentre con python si può fare anche dell'ottima programmazione procedurale
01:08:05 < hoax> poi java non è di scripting mentre Python sì
01:08:25 < Stemby> diciamo di sì :)
01:08:29 < hoax> ma essere linguaggio di scripting significa solo che non è compilato?
01:09:05 < Stemby> bah, diciamo che ai programmatori python non piace molto la definizione di python come linguaggio di scripting
01:09:33 < Stemby> tra l'altro python È compilato
01:09:48 < Stemby> (anche se il programmatore quasi non se ne accorge)
01:10:02 < hoax> leggo che usate un interprete, o dico sbagliato?
01:10:09 < Stemby> sì
01:10:20 < hoax> sarebbe le shell interattiva?
01:10:23 < Stemby> ma in realtà l'interprete è più che un interprete
01:10:24 < Stemby> sì
01:10:52 < Stemby> la shell interattiva è l'interfaccia utente per dialogare direttamente con l'interprete
01:11:15 < Stemby> ma l'interprete (python3) in realtà è molto di più
01:11:27 < Stemby> è un compilatore
01:11:36 < Stemby> e anche una macchina virtuale
01:11:58 < hoax> un po' come la java virtual machine
01:12:06 < Stemby> (compila in bytecode, e poi la macchina virtuale trasforma il bytecode in linguaggio macchina)
01:12:14 < Stemby> hoax: sì, è molto simile
01:12:20 < Stemby> solo che è del tutto trasparente
01:12:33 < Stemby> il programmatore non deve compilare manualmente
01:12:44 < Stemby> e la compilazione avviene in tempo reale
01:12:58 < Stemby> quindi per il programmatore è come se fosse un linguaggio interpretato
01:13:17 < hoax> in che senso in tempo reale?
01:13:29 < hoax> Cioè istruzione per istruzione
01:13:36 < Stemby> esatto
01:13:43 < hoax> non tutto il sorgente in blocco come in C
01:13:48 < Stemby> esatto
01:14:05 < Stemby> è per quello che puoi usare l'interfaccia interattiva
01:14:25 < Stemby> lì in pratica si scrive un'istruzione alla volta
01:15:10 < hoax> capito
01:15:18 < Stemby> http://it.diveintopython.org/getting_to_know_python/testing_modules.html
01:15:42 < Stemby> qui la prima spiegazione che ho trovato online riguardo al trucchetto che abbiamo provato stasera
01:17:05 < Stemby> dai, hoax, cerca di recuperare
01:17:13 < Stemby> stiamo andando davvero tranquilli
01:18:32 < Stemby> notte