-
python memory bindings and scopesalso, come va? che dite?
ad ogni modo, ho una questione di informatica che mi cruccia, sto perdendo un po di tempo per rilassarmi ergo python.
diciamo che io abbia questo codice:def f(x): x = x+1 print("il valore di x nella funzione f(x) e:", x) return x x = 5 z = f(x) print(x) print(z)
il risultato di questa corsa e':('il valore di x nella funzione f(x) e:', 6) 5 6
se invece io lo modifico cosi:def f(x): x = x+1 print("il valore di x nella funzione f(x) e:", x) return x x = 5 x = f(x) print(x) print(x)
alla fine della corsa dice:('il valore di x nella funzione f(x) e:', 6) 6 6
se provo a seguire i memory binding passo passo mi sorgono delle questioni, seguendoli in ordine:
1) definizione della funzione f(x) <- cosa succede ai memory binding?
2) binding di x=5
3) binding di x=f(x) <- e' qua il cambio di scope? questo non puo essere un binding dato il comportamento del programma, o sbaglio?
4) cambio di scope
5) esecuzione di x = x+1
come cazzo a fatto a farlo prendendo il primo binding di x=5 se io gli ho fatto rifafre il binding come x=f(x)? x=5 a quel punto non dovrebbe essere diventato cibo per il garbage collector? evidentemente no, o si? e come mai nel primo caso nonostate io abbia alla fine della funzione un return x il valore di x printato e' 5 invece di 6, il print(x) in quel caso e' stato fatto dopo il return della funzione dove x e' stato incrementato, la variabile z si e' occupata di chiamare la funzione, cosa e' successo.
sono consufo, fa caldo.Please consider the environment before printing this message, 50% of the above is useless!-
Re: python memory bindings and scopesScritto daNon Autenticatoil 2017-06-22 12:32:51.0 alle 2017-06-22 12:32:51.0Ciao Dada, oggi scopro che Dante Alighieri aveva una mente splatter e me ne compiaccio.
-
Re: python memory bindings and scopesScritto daNon Autenticatoil 2017-06-22 12:41:27.0 alle 2017-06-22 12:41:27.0Ciao dada, se un gatto - uno a caso - volesse studiare ingegneria genetica per capirne qualcosa, dove e come dovrebbe iniziare?
Un testo universitario di biologia generale.
Un testo universitario di genetica generale.
Già qui occorrono i testi giusti che non faciano perdere tempo.
E poi?-
Re: python memory bindings and scopesScritto da:
> Ciao dada, se un gatto - uno a caso - volesse studiare ingegneria genetica per capirne qualcosa, dove e come dovrebbe iniziare?
>
> Un testo universitario di biologia generale.
> Un testo universitario di genetica generale.
>
> Già qui occorrono i testi giusti che non faciano perdere tempo.
>
> E poi?
e' un po strano l'orientamento riguardo ai testi, il primo problema e' la velocita' a cui stanno cambiando le cose nell'ambiente, anche a livello basilare.
nature ha risolto il problema cosi' e questo testo lo usano davvero nelle universita'
http://www.nature.com/nature_education/interactive...
non lo ho comprato ma mi piacerebbe farlo.
ad ogni modo la biologia e' vasta, i professori stessi ti riempiono di dispense prese da testi diversi e li usano principalmente per le immagini. per assurdo i libri di testo delle superiori, se abbastanza recenti, ti forniscono gia' una bella serie di immagini ed diagrammi che ti assicuro sono tutt'altro che semplici, in italiano i vari campbell edition sono quelli che usano dalle superiori alla prima reintroduzione alla biologia all'universita', come introduzione generale vanno benissimo se approfondisci con qualche risorsa internet.
dopodiche' cmq mi sembra di capire che questo yoda qualunque, pardon, gatto qualunque, voglia conoscere la scorciatotia per capire qualcosa di genetica, ecco quella non sta sui libri di biologia ma passa da almeno due libri di testo interi, scegline uno a caso da qualche libreria universitaria che sia almeno degli anni 2010 e li intorno riguardo a:
Citologia ed istologia
poi
chimica organica
e subito dopo puoi gettarti sulla genetia vera e propria, ovvero
biologia molecolare
genetica
di tutte queste parole chiave trovi libri di testo interi dedicati all'argomento, welcome aboard.
Please consider the environment before printing this message, 50% of the above is useless!-
Re: python memory bindings and scopesScritto daNon Autenticatoil 2017-06-23 00:02:42.0 alle 2017-06-23 00:02:42.0Scritto da: dada216
> Scritto da:
> > Ciao dada, se un gatto - uno a caso - volesse studiare ingegneria genetica per capirne qualcosa, dove e come dovrebbe iniziare?
> >
> > Un testo universitario di biologia generale.
> > Un testo universitario di genetica generale.
> >
> > Già qui occorrono i testi giusti che non faciano perdere tempo.
> >
> > E poi?
>
> e' un po strano l'orientamento riguardo ai testi, il primo problema e' la velocita' a cui stanno cambiando le cose nell'ambiente, anche a livello basilare.
>
> nature ha risolto il problema cosi' e questo testo lo usano davvero nelle universita'
>
> http://www.nature.com/nature_education/interactive...
> non lo ho comprato ma mi piacerebbe farlo.
>
> ad ogni modo la biologia e' vasta, i professori stessi ti riempiono di dispense prese da testi diversi e li usano principalmente per le immagini. per assurdo i libri di testo delle superiori, se abbastanza recenti, ti forniscono gia' una bella serie di immagini ed diagrammi che ti assicuro sono tutt'altro che semplici, in italiano i vari campbell edition sono quelli che usano dalle superiori alla prima reintroduzione alla biologia all'universita', come introduzione generale vanno benissimo se approfondisci con qualche risorsa internet.
>
> dopodiche' cmq mi sembra di capire che questo yoda qualunque, pardon, gatto qualunque, voglia conoscere la scorciatotia per capire qualcosa di genetica, ecco quella non sta sui libri di biologia ma passa da almeno due libri di testo interi, scegline uno a caso da qualche libreria universitaria che sia almeno degli anni 2010 e li intorno riguardo a:
>
> Citologia ed istologia
>
> poi
>
> chimica organica
>
> e subito dopo puoi gettarti sulla genetia vera e propria, ovvero
>
> biologia molecolare
>
> genetica
>
> di tutte queste parole chiave trovi libri di testo interi dedicati all'argomento, welcome aboard.
Ma io vorrei una scorciatoia, spendere poco, e del cioccolato.
La cosa che mi disturba è che a seconda di come hai il cervello certi libri fanno per te e altri no, e non puoi saperlo prima di averli letti.
-
Re: python memory bindings and scopesScritto daNon Autenticatoil 2017-06-30 17:03:12.0 alle 2017-06-30 17:03:12.0Scritto da: dada216
> Scritto da:
> > Ciao dada, se un gatto - uno a caso - volesse studiare ingegneria genetica per capirne qualcosa, dove e come dovrebbe iniziare?
> >
> > Un testo universitario di biologia generale.
> > Un testo universitario di genetica generale.
> >
> > Già qui occorrono i testi giusti che non faciano perdere tempo.
> >
> > E poi?
>
> e' un po strano l'orientamento riguardo ai testi, il primo problema e' la velocita' a cui stanno cambiando le cose nell'ambiente, anche a livello basilare.
>
> nature ha risolto il problema cosi' e questo testo lo usano davvero nelle universita'
>
> http://www.nature.com/nature_education/interactive...
> non lo ho comprato ma mi piacerebbe farlo.
>
> ad ogni modo la biologia e' vasta, i professori stessi ti riempiono di dispense prese da testi diversi e li usano principalmente per le immagini. per assurdo i libri di testo delle superiori, se abbastanza recenti, ti forniscono gia' una bella serie di immagini ed diagrammi che ti assicuro sono tutt'altro che semplici, in italiano i vari campbell edition sono quelli che usano dalle superiori alla prima reintroduzione alla biologia all'universita', come introduzione generale vanno benissimo se approfondisci con qualche risorsa internet.
>
> dopodiche' cmq mi sembra di capire che questo yoda qualunque, pardon, gatto qualunque, voglia conoscere la scorciatotia per capire qualcosa di genetica, ecco quella non sta sui libri di biologia ma passa da almeno due libri di testo interi, scegline uno a caso da qualche libreria universitaria che sia almeno degli anni 2010 e li intorno riguardo a:
>
> Citologia ed istologia
>
> poi
>
> chimica organica
>
> e subito dopo puoi gettarti sulla genetia vera e propria, ovvero
>
> biologia molecolare
>
> genetica
>
> di tutte queste parole chiave trovi libri di testo interi dedicati all'argomento, welcome aboard.
Perché anche citologia e istologia?
Se uno dei miei scopi fosse clonare un essere vivente da cellule non più vitali (es. una foglia secca, un pezzo di legno) ci sono testi specifici? È attualmente possibile?-
Re: python memory bindings and scopesScritto da:
> Scritto da: dada216
> > Scritto da:
> > > Ciao dada, se un gatto - uno a caso - volesse studiare ingegneria genetica per capirne qualcosa, dove e come dovrebbe iniziare?
> > >
> > > Un testo universitario di biologia generale.
> > > Un testo universitario di genetica generale.
> > >
> > > Già qui occorrono i testi giusti che non faciano perdere tempo.
> > >
> > > E poi?
> >
> > e' un po strano l'orientamento riguardo ai testi, il primo problema e' la velocita' a cui stanno cambiando le cose nell'ambiente, anche a livello basilare.
> >
> > nature ha risolto il problema cosi' e questo testo lo usano davvero nelle universita'
> >
> > http://www.nature.com/nature_education/interactive...
> > non lo ho comprato ma mi piacerebbe farlo.
> >
> > ad ogni modo la biologia e' vasta, i professori stessi ti riempiono di dispense prese da testi diversi e li usano principalmente per le immagini. per assurdo i libri di testo delle superiori, se abbastanza recenti, ti forniscono gia' una bella serie di immagini ed diagrammi che ti assicuro sono tutt'altro che semplici, in italiano i vari campbell edition sono quelli che usano dalle superiori alla prima reintroduzione alla biologia all'universita', come introduzione generale vanno benissimo se approfondisci con qualche risorsa internet.
> >
> > dopodiche' cmq mi sembra di capire che questo yoda qualunque, pardon, gatto qualunque, voglia conoscere la scorciatotia per capire qualcosa di genetica, ecco quella non sta sui libri di biologia ma passa da almeno due libri di testo interi, scegline uno a caso da qualche libreria universitaria che sia almeno degli anni 2010 e li intorno riguardo a:
> >
> > Citologia ed istologia
> >
> > poi
> >
> > chimica organica
> >
> > e subito dopo puoi gettarti sulla genetia vera e propria, ovvero
> >
> > biologia molecolare
> >
> > genetica
> >
> > di tutte queste parole chiave trovi libri di testo interi dedicati all'argomento, welcome aboard.
>
> Perché anche citologia e istologia?
perche' se vuoi capire come funziona tutto il meccanismo del dna devi capire come funziona una cellula, poi chimica organica e poi biologia molecolare.
>
> Se uno dei miei scopi
>fosse clonare un essere vivente da cellule non più vitali (es. una foglia secca, un pezzo di legno) ci sono testi specifici? È attualmente possibile?
ci stanno provando in molti, probabilmente e' fattibile date alcune condizioni, ad esempio i tizi che vogliono riportare in vita i mammuth probabilmente ce la farebbero e li prendono tutti molto sul serio al riguardo, al punto che si sta gia discutendo della morale della cosa dando per scontato che con un po di soldi (stiamo comunque parlando di laboratori, strututre e costi da mln di euro) ce la si farebbe.
tu a casa oggi puoi gia' fare un sacco di cose cmq, ad esempo estrarre del dna se lo desideri, con un paio di step in piu' (dovrebbe essere fattibile farlo a casa con al massimo dei kit) potresti isolarne delle parti e farle replicare.
cmq
http://learn.genetics.utah.edu/content/labs/extrac...
Please consider the environment before printing this message, 50% of the above is useless!-
Re: python memory bindings and scopesScritto daNon Autenticatoil 2017-06-30 19:18:49.0 alle 2017-06-30 19:18:49.0Scritto da: dada216
> Scritto da:
> > Scritto da: dada216
> > > Scritto da:
> > > > Ciao dada, se un gatto - uno a caso - volesse studiare ingegneria genetica per capirne qualcosa, dove e come dovrebbe iniziare?
> > > >
> > > > Un testo universitario di biologia generale.
> > > > Un testo universitario di genetica generale.
> > > >
> > > > Già qui occorrono i testi giusti che non faciano perdere tempo.
> > > >
> > > > E poi?
> > >
> > > e' un po strano l'orientamento riguardo ai testi, il primo problema e' la velocita' a cui stanno cambiando le cose nell'ambiente, anche a livello basilare.
> > >
> > > nature ha risolto il problema cosi' e questo testo lo usano davvero nelle universita'
> > >
> > > http://www.nature.com/nature_education/interactive...
> > > non lo ho comprato ma mi piacerebbe farlo.
> > >
> > > ad ogni modo la biologia e' vasta, i professori stessi ti riempiono di dispense prese da testi diversi e li usano principalmente per le immagini. per assurdo i libri di testo delle superiori, se abbastanza recenti, ti forniscono gia' una bella serie di immagini ed diagrammi che ti assicuro sono tutt'altro che semplici, in italiano i vari campbell edition sono quelli che usano dalle superiori alla prima reintroduzione alla biologia all'universita', come introduzione generale vanno benissimo se approfondisci con qualche risorsa internet.
> > >
> > > dopodiche' cmq mi sembra di capire che questo yoda qualunque, pardon, gatto qualunque, voglia conoscere la scorciatotia per capire qualcosa di genetica, ecco quella non sta sui libri di biologia ma passa da almeno due libri di testo interi, scegline uno a caso da qualche libreria universitaria che sia almeno degli anni 2010 e li intorno riguardo a:
> > >
> > > Citologia ed istologia
> > >
> > > poi
> > >
> > > chimica organica
> > >
> > > e subito dopo puoi gettarti sulla genetia vera e propria, ovvero
> > >
> > > biologia molecolare
> > >
> > > genetica
> > >
> > > di tutte queste parole chiave trovi libri di testo interi dedicati all'argomento, welcome aboard.
> >
> > Perché anche citologia e istologia?
>
> perche' se vuoi capire come funziona tutto il meccanismo del dna devi capire come funziona una cellula, poi chimica organica e poi biologia molecolare.
>
> >
> > Se uno dei miei scopi
> > fosse clonare un essere vivente da cellule non più vitali (es. una foglia secca, un pezzo di legno) ci sono testi specifici? È attualmente possibile?
>
> ci stanno provando in molti, probabilmente e' fattibile date alcune condizioni, ad esempio i tizi che vogliono riportare in vita i mammuth probabilmente ce la farebbero e li prendono tutti molto sul serio al riguardo, al punto che si sta gia discutendo della morale della cosa dando per scontato che con un po di soldi (stiamo comunque parlando di laboratori, strututre e costi da mln di euro) ce la si farebbe.
>
> tu a casa oggi puoi gia' fare un sacco di cose cmq, ad esempo estrarre del dna se lo desideri, con un paio di step in piu' (dovrebbe essere fattibile farlo a casa con al massimo dei kit) potresti isolarne delle parti e farle replicare.
>
> cmq
> http://learn.genetics.utah.edu/content/labs/extrac...
Porc! M'ero dimenticato di Learn Genetics! L'ho messo nell'apposita cartella e l'ho dimenticato.
-
-
-
-
-
Re: python memory bindings and scopesScritto daavvelentaniCubicolarioil 2017-06-22 13:24:58.0 alle 2017-06-22 13:24:58.0Trollate totali: 18184Scritto da: dada216
> also, come va? che dite?
>
>
> ad ogni modo, ho una questione di informatica che mi cruccia, sto perdendo un po di tempo per rilassarmi ergo python.
>
>
>
> diciamo che io abbia questo codice:
>> def f(x): > x = x+1 > print("il valore di x nella funzione f(x) e:", x) > return x > > x = 5 > z = f(x) > print(x) > print(z)
>
> il risultato di questa corsa e':
>> ('il valore di x nella funzione f(x) e:', 6) > 5 > 6 >
>
> se invece io lo modifico cosi:
>
>> def f(x): > x = x+1 > print("il valore di x nella funzione f(x) e:", x) > return x > > x = 5 > x = f(x) > print(x) > print(x)
>
> alla fine della corsa dice:
>> ('il valore di x nella funzione f(x) e:', 6) > 6 > 6 >
Sei confuso perche' ci sono due variabili 'x' in questo codice.
1. La variabile x globale definita alla rigax = 5
il cui scope e` globale
2. La variable x locale alla funziona f definita alla rigadef f(x):
il cui scope e` limitato all'interno della funzione f.
>
> se provo a seguire i memory binding passo passo mi sorgono delle questioni, seguendoli in ordine:
>
> 1) definizione della funzione f(x) <- cosa succede ai memory binding?
Viene creata una variabile chiamata 'f' a cui viene assegnato il codice della funzione
> 2) binding di x=5
viene creata una variabile globale x e gli viene assegnato il valore 5
> 3) binding di x=f(x) <- e' qua il cambio di scope? questo non puo essere un binding dato il comportamento del programma, o sbaglio?
succedono due cose su questa riga:
1. viene chiamata la funzione f, per fare questo viene creato un nuovo binding per la variabile x [b]locale alla funzione f[/b] e gli viene assegnato il valore 5, risultato della valutazione della variabile x [b]globale[/b].
2. il risultato della chiamata ad f viene assegnato alla variabile x [b]globale[/b]
> 4) cambio di scope
si` ma lo scope globale resta sempre attivo.
> 5) esecuzione di x = x+1
>
> come cazzo a fatto a farlo prendendo il primo binding di x=5 se io gli ho fatto rifafre il binding come x=f(x)?
in questo momento esistono due variabili x, la variabile globale e l'argomento di f.
> x=5 a quel punto non dovrebbe essere diventato cibo per il garbage collector? evidentemente no, o si?
No perche' lo scope globale continua ad esistere anche durante l'esecuzione di f. Mentre f viene eseguita la x globale non e` "out of scope" ma "shadowed", ovvero inaccessibile perche' coperta dalla variabile x locale ad f. Quando f termina la variabile locale x va out of scope e la variabile globale x smette di essere shadowed.
I think happiness is love
- Vladimir Putin-
Re: python memory bindings and scopesScritto da: avvelentani
> Scritto da: dada216
> > also, come va? che dite?
> >
> >
> > ad ogni modo, ho una questione di informatica che mi cruccia, sto perdendo un po di tempo per rilassarmi ergo python.
> >
> >
> >
> > diciamo che io abbia questo codice:
> >> > def f(x): > > x = x+1 > > print("il valore di x nella funzione f(x) e:", x) > > return x > > > > x = 5 > > z = f(x) > > print(x) > > print(z)
> >
> > il risultato di questa corsa e':
> >> > ('il valore di x nella funzione f(x) e:', 6) > > 5 > > 6 > >
> >
> > se invece io lo modifico cosi:
> >
> >> > def f(x): > > x = x+1 > > print("il valore di x nella funzione f(x) e:", x) > > return x > > > > x = 5 > > x = f(x) > > print(x) > > print(x)
> >
> > alla fine della corsa dice:
> >> > ('il valore di x nella funzione f(x) e:', 6) > > 6 > > 6 > >
>
> Sei confuso perche' ci sono due variabili 'x' in questo codice.
>
esattamente, lo ho provato a fare per capire meglio cosa stava succeddendo ai bindings.
> 1. La variabile x globale definita alla riga
>> x = 5 >
>
> il cui scope e` globale
>
> 2. La variable x locale alla funziona f definita alla riga
>> def f(x): >
>
> il cui scope e` limitato all'interno della funzione f.
aha, pero' viene in effetti gia' creato un binding al momento del parsing, binding di cosa di preciso?
lo scope quindi e' indipendente dai binding?
i binding vengono effettuati sequenzialmente e poi l'esecuzione delle istruzioni all'interno dei vari scope (dipendente dalla posizione ed ordine delle chiamate alle varie funzioni) dipende dal flow del programma? correct?
>
> >
> > se provo a seguire i memory binding passo passo mi sorgono delle questioni, seguendoli in ordine:
> >
> > 1) definizione della funzione f(x) <- cosa succede ai memory binding?
>
> Viene creata una variabile chiamata 'f' a cui viene assegnato il codice della funzione
"il codice della funzione", ovvero? stiamo proprio parlando delle istruzioni che ho scritto nell'indentatura? vengono prese e messe in memoria bindate alla variabile f? a questo punto il parametro che io specifico tra parentesi che cosa indica di preciso?
perche' se io faccio questo piccolo cambiamento e invece che def f(x) scrivo def f(y)def f(y): x = x+1 print('il valore di x nella funzione f(y) e:', x) return x x = 5 x = f(y) print(x) print(x)
il risultato e':Traceback (most recent call last): File "example.py", line 7, in <module> x = f(y) NameError: name 'y' is not defined
ergo ho pensato di renderlo tutto coerente con l'utilizzo di due variabili con nomi diversidef f(y): y = x+1 print('il valore di y nella funzione f(y) e:', y) return y x = 5 y = f(y) print(x) print(y)
il risultato e'Traceback (most recent call last): File "example.py", line 7, in <module> y = f(y) NameError: name 'y' is not defined
quando mi verrebbe invece di pensare che se la sarebbe dovuta cavare ed avrebbe dovuto (nelle mie intenzioni) fare 5 + 1 ed assegnare il valore 6 alla variabile y.
quindi non ho capito un cazzo riguardo ai parametri delle funzioni ed a cosa sto scrivendo.
>
> > 2) binding di x=5
>
> viene creata una variabile globale x e gli viene assegnato il valore 5
>
> > 3) binding di x=f(x) <- e' qua il cambio di scope? questo non puo essere un binding dato il comportamento del programma, o sbaglio?
>
> succedono due cose su questa riga:
>
> 1. viene chiamata la funzione f, per fare questo viene creato un nuovo binding per la variabile x [b]locale alla funzione f[/b] e gli viene assegnato il valore 5, risultato della valutazione della variabile x [b]globale[/b].
se eseguo il codice modificato con y infatti si lamenta del fatto che y non e' stato definito, quindi l'unica ragione per la quale il codice con due variabili con lo stesso nome funziona e' proprio perche' hanno lo stesso nome?
> 2. il risultato della chiamata ad f viene assegnato alla variabile x [b]globale[/b]
>
> > 4) cambio di scope
>
> si` ma lo scope globale resta sempre attivo.
>
> > 5) esecuzione di x = x+1
> >
> > come cazzo a fatto a farlo prendendo il primo binding di x=5 se io gli ho fatto rifafre il binding come x=f(x)?
>
> in questo momento esistono due variabili x, la variabile globale e l'argomento di f.
>
> > x=5 a quel punto non dovrebbe essere diventato cibo per il garbage collector? evidentemente no, o si?
>
> No perche' lo scope globale continua ad esistere anche durante l'esecuzione di f. Mentre f viene eseguita la x globale non e` "out of scope" ma "shadowed", ovvero inaccessibile perche' coperta dalla variabile x locale ad f. Quando f termina la variabile locale x va out of scope e la variabile globale x smette di essere shadowed.
grande, ho capito perche' x nei print successivi alla chiamata x poteva valere sia 5 sia 6, il valore 5 rimaneva shadowed e riscritto se ad effettuare la chiamata fosse x = f(x) ma non quando ad effettuarla era z = f(x).
pero' non ho ancora caapito perche' questo non funziona.def f(y): y = x+1 print('il valore di x nella funzione f(y) e:', x) print('il valore di y nella funzione f(y) e:', y) return y x = 5 y = f(y) print(x) print(y)
-->Traceback (most recent call last): File "example2.py", line 8, in <module> y = f(y) NameError: name 'y' is not defined
**Modificato dall'autore il 22.06.2017 14:48**Please consider the environment before printing this message, 50% of the above is useless!-
Re: python memory bindings and scopesScritto daavvelentaniCubicolarioil 2017-06-22 15:30:44.0 alle 2017-06-22 15:30:44.0Trollate totali: 18184Scritto da: dada216
> > 1. La variabile x globale definita alla riga
> >> > x = 5 > >
> >
> > il cui scope e` globale
> >
> > 2. La variable x locale alla funziona f definita alla riga
> >> > def f(x): > >
> >
> > il cui scope e` limitato all'interno della funzione f.
>
> aha, pero' viene in effetti gia' creato un binding al momento del parsing,
No. Viene creata una variabile.
> binding di cosa di preciso?
> lo scope quindi e' indipendente dai binding?
Sono concetti collegati, il binding dipende dallo scope. Se tu chiamassi la tua funzione f due volte la variabile x (quella locale a f) avrebbe due binding differenti, uno per chiamata.
Ogni binding (in python) vive finche' lo scope che definisce la variabile e` attivo.
In pratica e` l'allocazione in memoria dello spazio necessario a rappresentare una variabile.
Non pensare troppo ai binding, e` un concetto complicato se non pensi a come viene implementato il linguaggio di programmazione.
> i binding vengono effettuati sequenzialmente e poi l'esecuzione delle istruzioni all'interno dei vari scope (dipendente dalla posizione ed ordine delle chiamate alle varie funzioni) dipende dal flow del programma? correct?
Sia il binding che l'esecuzione delle istruzioni dipende dal flusso del programma.
> > Viene creata una variabile chiamata 'f' a cui viene assegnato il codice della funzione
>
> "il codice della funzione", ovvero? stiamo proprio parlando delle istruzioni che ho scritto nell'indentatura? vengono prese e messe in memoria bindate alla variabile f? a questo punto il parametro che io specifico tra parentesi che cosa indica di preciso?
Stiamo parlando delle istruzioni in bytecode:Type "help", "copyright", "credits" or "license" for more information. >>> def f(x): ... x = x + 1 ... print x ... return x ... >>> f <function f at 0x7ff5f6aea5f0> >>> dir(f) ['__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__doc__', '__format__', '__get__', '__getattribute__', '__globals__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name'] >>> f.__code__ <code object f at 0x7ff5f6b268b0, file "<stdin>", line 1> >>> [ord(x) for x in f.__code__.co_code] [124, 0, 0, 100, 1, 0, 23, 125, 0, 0, 124, 0, 0, 71, 72, 124, 0, 0, 83] >>> import dis >>> dis.dis(f) 2 0 LOAD_FAST 0 (x) 3 LOAD_CONST 1 (1) 6 BINARY_ADD 7 STORE_FAST 0 (x) 3 10 LOAD_FAST 0 (x) 13 PRINT_ITEM 14 PRINT_NEWLINE 4 15 LOAD_FAST 0 (x) 18 RETURN_VALUE
>
>
> quando mi verrebbe invece di pensare che se la sarebbe dovuta cavare ed avrebbe dovuto (nelle mie intenzioni) fare 5 + 1 ed assegnare il valore 6 alla variabile y.
> quindi non ho capito un cazzo riguardo ai parametri delle funzioni ed a cosa sto scrivendo.
Esatto. Nello scope in cui fai la chiamata a f (globale) la variabile y non esiste, di conseguenza la sottoespressione 'y' dell'espressione 'f(y)' non puo` essere valutata.
> se eseguo il codice modificato con y infatti si lamenta del fatto che y non e' stato definito, quindi l'unica ragione per la quale il codice con due variabili con lo stesso nome funziona e' proprio perche' hanno lo stesso nome?
Funziona perche' non stai cercando di valutare il valore di variabili out of scope.
**Modificato dall'autore il 22.06.2017 15:36**I think happiness is love
- Vladimir Putin-
Re: python memory bindings and scopesScritto da: avvelentani
>
> No. Viene creata una variabile.
il binding viene creato solo quando io assegno qualcosa a quella variabile.
>
>
> Sono concetti collegati, il binding dipende dallo scope. Se tu chiamassi la tua funzione f due volte la variabile x (quella locale a f) avrebbe due binding differenti, uno per chiamata.
aha
> Ogni binding (in python) vive finche' lo scope che definisce la variabile e` attivo.
> In pratica e` l'allocazione in memoria dello spazio necessario a rappresentare una variabile.
> Non pensare troppo ai binding, e` un concetto complicato se non pensi a come viene implementato il linguaggio di programmazione.
>
sono stati introdotti subito, dopodiche' dai loop si e' passati a quell'esempio e si e' parlato di scope senza menzionare piu' i binding, ma sospettavo fossero collegati perche' di fatto si tratta della gestione della memoria.
e' una roba python specific o rimane fondamentalmente uguale tra i vari linguaggi?
>
> Sia il binding che l'esecuzione delle istruzioni dipende dal flusso del programma.
>
>
> Stiamo parlando delle istruzioni in bytecode:
>
>> Type "help", "copyright", "credits" or "license" for more information. > ... x = x + 1 > ... print x > ... return x > ... > <function f at 0x7ff5f6aea5f0> > ['__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__doc__', '__format__', '__get__', '__getattribute__', '__globals__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name'] > <code object f at 0x7ff5f6b268b0, file "<stdin>", line 1> > [124, 0, 0, 100, 1, 0, 23, 125, 0, 0, 124, 0, 0, 71, 72, 124, 0, 0, 83] > 2 0 LOAD_FAST 0 (x) > 3 LOAD_CONST 1 (1) > 6 BINARY_ADD > 7 STORE_FAST 0 (x) > > 3 10 LOAD_FAST 0 (x) > 13 PRINT_ITEM > 14 PRINT_NEWLINE > > 4 15 LOAD_FAST 0 (x) > 18 RETURN_VALUE > >
>
>
> Esatto. Nello scope in cui fai la chiamata a f (globale) la variabile y non esiste, di conseguenza la sottoespressione 'y' dell'espressione 'f(y)' non puo` essere valutata.
>
>
> Funziona perche' non stai cercando di valutare il valore di variabili out of scope.
>
infatti cosi fa quello che volevo ottenere.def f(x): y = x+1 print('il valore di x nella funzione f(x) e:', x) print('il valore di y nella funzione f(x) e:', y) return y x = 5 y = f(x) print(x) print(y)('il valore di x nella funzione f(x) e:', 5) ('il valore di y nella funzione f(x) e:', 6) 5 6
e lo fa in maniera differente dadef f(x): x = x+1 print("il valore di x nella funzione f(x) e:", x) return x x = 5 z = f(x) print(x) print(z)
che corre cosi('il valore di x nella funzione f(x) e:', 6) 5 6
tutto molto interessante, grazie per il dilettevole ozio.
**Modificato dall'autore il 22.06.2017 16:09**Please consider the environment before printing this message, 50% of the above is useless!-
Re: python memory bindings and scopesScritto daavvelentaniCubicolarioil 2017-06-22 16:32:28.0 alle 2017-06-22 16:32:28.0Trollate totali: 18184Scritto da: dada216
> Scritto da: avvelentani
> >
> > No. Viene creata una variabile.
>
> il binding viene creato solo quando io assegno qualcosa a quella variabile.
In python si`. Nota che non tutti gli assegnamenti creano un binding. As esempio 'x = x+1' dentro f non crea un nuovo binding.
> > Ogni binding (in python) vive finche' lo scope che definisce la variabile e` attivo.
> > In pratica e` l'allocazione in memoria dello spazio necessario a rappresentare una variabile.
> > Non pensare troppo ai binding, e` un concetto complicato se non pensi a come viene implementato il linguaggio di programmazione.
> >
>
> sono stati introdotti subito, dopodiche' dai loop si e' passati a quell'esempio e si e' parlato di scope senza menzionare piu' i binding, ma sospettavo fossero collegati perche' di fatto si tratta della gestione della memoria.
>
> e' una roba python specific o rimane fondamentalmente uguale tra i vari linguaggi?
esiste in tutti i linguaggi, i dettagli variano.
I think happiness is love
- Vladimir Putin
-
-
-
-
-