Il giorno ven, 08/11/2013 alle 13.13 +0000, Daniele Varrazzo ha scritto: > On 2013-11-08 12:43, Pietro Battiston wrote: > > > Giusto per curiosità, questo fatto che il parsing degli argomenti di > > default non avvenga a runtime lo definireste un inconveniente tecnico > > con cui si può sopravvivere tranquillamente (fare altrimenti > > richiederebbe, in parole povere, uno scope in più?) o una feature? > > È una feature utile in diversi casi. Simula le variabili statiche del c > per esempio: spesso uso un parametro "nascosto" come cache privata. > > def calcolone(_result=[]): > if _result: > return _result[0] > _result.append(<qualcosa che richiede tempo>) > return _result[0] >
Uh. Privata davvero! Ma è questo il motivo per cui lo fai (invece che dichiarare _result come attributo della classe)?! O anche qui (come dici sotto) c'è un discorso di efficienza? > o per avere variabili locali: > > def lookup(arg, _dict={'a': 1, 'b': 2, ...}): > return _dict[arg] > > def parse(str, _rex=re.compile('some regexp')) > return _rex.match(str) > > Preferisco le variabili locali perchè 1. sono private e 2. sono più > efficienti delle globali. > > Un caso di uso più articolato riguarda le chiusure lessicali e torna > comodo quando si usa Python in maniera funzionale. L'ho descritta qui > qualche anno fa: > <http://stackoverflow.com/questions/233673/lexical-closures-in-python> > (vedi la risposta più upvotata). Chiaro... grazie! Pietro _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python