Articles of cierres

Imprimiendo la serie de fibonacci

Estoy tratando de escribir un progtwig Python simple. Se supone que devuelve un cierre que devuelve números de fibonacci sucesivos: def fibGen(): n_1 = 0 n_2 = 0 n = 1 def fib(): if n_1 ==0 and n_2 ==0: n_1 = 1 return n else: n = n_1 + n_2 n_2 = n_1 n_1 = […]

¿Cómo crear nuevos objetos de celdas de cierre?

Necesito aplicar un parche en mi biblioteca para reemplazar una instancia de un símbolo, y algunos cierres de funciones hacen referencia a él. Necesito copiar esas funciones (ya que también necesito acceso a la versión original sin parchear de la función), pero __closure__ es inmutable, y no puedo copy.copy . copy.copy , entonces, ¿cómo puedo […]

¿Cómo se refiere una función lambda a sus parámetros en python?

Soy nuevo en Python. Mi tarea fue bastante simple: necesito una lista de funciones que puedo usar para hacer cosas en lotes. Así que jugué con algunos ejemplos como fs = [lambda x: x + i for i in xrange(10)] Sorprendentemente, la llamada de [f(0) for f in fs] Me dio el resultado como [9, […]

Encontrar los parámetros de una función en Python

Quiero poder preguntar al método __init__ una clase cuáles son sus parámetros. El enfoque directo es el siguiente: cls.__init__.__func__.__code__.co_varnames[:code.co_argcount] Sin embargo, eso no funcionará si la clase tiene decoradores. Le dará la lista de parámetros para la función devuelta por el decorador. Quiero llegar al método __init__ original y obtener esos parámetros originales. En el […]

¿Cómo inyectar variable dentro del scope con un decorador?

[Descargo de responsabilidad: puede haber más formas pythonicas de hacer lo que quiero hacer, pero quiero saber cómo funciona el scope de Python aquí] Estoy tratando de encontrar una manera de hacer un decorador que haga algo como inyectar un nombre en el scope de otra función (de modo que el nombre no se filtre […]

Á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 […]