tema
lst = [lambda x: x*i for i in range(4)]
res = [m(2) for m in lst]
print res
Esta pregunta involucra el conocimiento de Python sobre cierres y enlace retrasado (alcance de Python).
En la programación central de Python, los cierres se definen de la siguiente manera:
Si dentro de una función interna hay una referencia a una variable en el ámbito externo (pero no en el ámbito global), entonces la función interna se considera un cierre.
Se puede resumir en tres puntos:
1, es una función en línea
2. Referencia a variables de funciones externas
3. Las funciones externas devuelven funciones incrustadas
Ejemplo de cierre simple:
def counter(start_at=0):
count = [start_at]
def incr():
count[0] += 1
return count[0]
return incr
La pregunta anterior se puede escribir como:
def func():
fun_list = []
for