[Python] Annidamento di funzioni

Matteo Boscolo matteo.boscolo a boscolini.eu
Gio 21 Mar 2013 20:16:15 CET


Ciao a tutti,

vorrei sfruttare la possibilità di annidare le funzioni di python in 
questo modo:

def solve():
     a1=100
     a2=1
     def nodeA():
         a=a1
         b=20
         def nodeB():
             c=a+b
             return {'a':a,'c':c}
         return {'a':a,'b':b,'nodneB':nodeB()}
     def nodeC():
         a=a2
         b=20
         def nodeB():
             a=1999
             c=a+b
             return {'a':a,'c':c}
         return {'a':a,'b':b,'nodneB':nodeB()}

     return nodeA(),nodeC()

print "A",solve()

e' solo un codice di studio, quindi il ritorno delle varie funzioni non 
e' particolarmente importante per ora.
in pratica il mio codice dovrebbe creare questa sruttura a runtime e 
"compilarla" e prendere il valore di solve() "Questo lo so gia fare" ...
tutto questo per sfruttare gli scope di python ..

a questo punto vi chiedo?

* quante volte posso annidare una funzione dentro un altra prima che 
python si incazzi ?
* c'è qualche problema di performance nell'annidare le funzioni in 
questo modo ?
* c'è un modo alternativo di implementare sta roba ottenendo il 
comportamento dello scope di python.

qualsiasi idea e benvenuta..

ciao
Matteo







Maggiori informazioni sulla lista Python