[Python] Un generatore che non capisco
Daniele Varrazzo
piro a develer.com
Ven 8 Nov 2013 14:13:13 CET
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]
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).
-- Daniele
Maggiori informazioni sulla lista
Python