Articles of cierres

Ámbito local, más allá del ámbito del anexo.

¿Por qué la función lambda para obtener la lista de valores i = 4? La función f ha finalizado el trabajo y ha devuelto el control (la variable i no existe). def f(): L = [] for i in range(5): L.append(lambda x: i ** x) return L L = f() L[0] def f1(N): def f2(X): […]

¿Cómo funcionan las funciones anidadas en Python?

def maker(n): def action(x): return x ** n return action f = maker(2) print(f) print(f(3)) print(f(4)) g = maker(3) print(g(3)) print(f(3)) # still remembers 2 ¿Por qué la función anidada recuerda el primer valor 2 a pesar de que maker() ha regresado y salido cuando se llama a action() ?

El cierre de Python no funciona como se esperaba

Cuando ejecuto el siguiente script, ambos lambda ejecutan os.startfile () en el mismo archivo – junk.txt. Yo esperaría que cada lambda usara el valor “f” cuando se creó la lambda. ¿Hay alguna manera de hacer que esto funcione como espero? import os def main(): files = [r’C:\_local\test.txt’, r’C:\_local\junk.txt’] funcs = [] for f in files: […]

Creación dinámica de funciones en Python con nombres personalizados.

Disculpas si esta pregunta ya ha sido planteada y contestada. Lo que debo hacer es un concepto muy simple, pero desafortunadamente no he podido encontrar una respuesta en línea. Necesito crear funciones dinámicas en Python (Python2.7) con nombres personalizados en tiempo de ejecución. El cuerpo de cada función también debe construirse en tiempo de ejecución, […]

¿Qué es una célula en el contexto de un intérprete o comstackdor?

Los objetos de código de Python tienen un atributo co_cellvars . La documentación del intérprete de bytecode de PyPy a menudo usa el término Celda . Entre otros idiomas, Rust proporciona un tipo de datos de celda . Googlear sugiere que se relacionan con los cierres de alguna manera. ¿Qué es una célula , en […]

Código de ejemplo de cierres de Python

Estoy aprendiendo Python usando el libro Dive Into Python 3 . Me gusta, pero no entiendo el ejemplo usado para introducir los cierres en la Sección 6.5. Quiero decir, veo cómo funciona, y creo que es realmente genial. Pero no veo ningún beneficio real: me parece que se puede lograr el mismo resultado simplemente leyendo […]

¿Cómo burlarse de las funciones anidadas?

La biblioteca burlona que uso es … simulacro . Encontré este problema de “funciones anidadas simuladas” cuando intenté escribir un caso de prueba para una función (código heredado). Esta función utiliza una función anidada muy compleja con grandes dependencias en otros módulos. Me pregunto si es posible simular funciones anidadas con mock .

¿Cómo entender el cierre en una lambda?

Quiero hacer 5 botones en un bucle y, para cada uno de ellos, encuadernar una recomendación para imprimir el índice. En la siguiente solución siempre imprime el mismo índice. Mi código como este: for i in range(5): make_button = Tkinter.Button(frame, text =”make!”, command= lambda: makeId(i)) def makeId(i): print(i) Siempre imprime 5. ¿Cómo puedo solucionar esto?

Python lambda cierre de scope

Estoy tratando de usar cierres para eliminar una variable de una firma de función (la aplicación es para escribir todas las funciones necesarias para conectar señales Qt para una interfaz para controlar una gran cantidad de parámetros en el diccionario que almacena los valores). No entiendo por qué el caso de usar el lambda no […]

¿Por qué son útiles las lambdas de Python?

Estoy tratando de averiguar lambda de Python. ¿Es la lambda uno de esos ítems del lenguaje “interesante” que en la vida real deberían olvidarse? Estoy seguro de que hay algunos casos de vanguardia en los que podría ser necesario, pero dada la oscuridad de la misma, la posibilidad de que se redefina en futuras versiones […]