Articles of scope de

python: ¿Cómo capturo una variable declarada en un ámbito externo ancestral no global?

Dado: def f(): x = 0 def g(): h() def h(): x += 1 print(x) g() >>> f() Traceback (most recent call last): File “”, line 1, in File “”, line 8, in f File “”, line 4, in g File “”, line 6, in h UnboundLocalError: local variable ‘x’ referenced before assignment >>> ¿Cómo […]

Reglas de scope de clase de Python

EDITAR: Parece que esto es un “error” muy antiguo o, en realidad, característica. Ver, por ejemplo, este correo Estoy tratando de entender las reglas de scope de Python. Más precisamente, pensé que los entendía pero luego encontré este código aquí : x = “xtop” y = “ytop” def func(): x = “xlocal” y = “ylocal” […]

Función de enlace de nombre local desde un ámbito externo

Necesito una forma de “inyectar” nombres en una función desde un bloque de código externo, para que sean accesibles localmente y no necesiten ser manejados específicamente por el código de la función (definido como parámetros de función, cargado desde *args etc.) El escenario simplificado: proporciona un marco dentro del cual los usuarios pueden definir (con […]

¿Cuál es el scope de un parámetro predeterminado en Python?

Cuando define una función en Python con un parámetro de matriz, ¿cuál es el scope de ese parámetro? Este ejemplo está tomado del tutorial de Python: def f(a, L=[]): L.append(a) return L print f(1) print f(2) print f(3) Huellas dactilares: [1] [1, 2] [1, 2, 3] No estoy seguro si entiendo lo que está pasando […]

Por qué las funciones anidadas pueden acceder a las variables desde las funciones externas, pero no se les permite modificarlas

En el segundo caso a continuación, Python intenta buscar una variable local. Cuando no encuentra uno, ¿por qué no puede verse en el ámbito externo como lo hace para el primer caso? Esto busca x en el scope local, luego en el scope externo: def f1(): x = 5 def f2(): print x Esto da […]

Python: accede a las variables de clase a través de la instancia

En Python, se puede acceder a las variables de clase a través de esa instancia de clase: >>> class A(object): … x = 4 … >>> a = A() >>> ax 4 Es fácil mostrar que el ax está realmente resuelta a Ax , no se copia en una instancia durante la construcción: >>> Ax […]

Función lambda accediendo fuera de la variable

Quería jugar con funciones anónimas, así que decidí hacer un buscador principal simple. Aquí está: tests = [] end = int(1e2) i = 3 while i <= end: a = map(lambda f:f(i),tests) if True not in a: tests.append(lambda x:x%i==0) print i print tests print "Test: "+str(i) print str(a) i+=2 Sin embargo, lo que encuentro es […]

Generando funciones dentro del bucle con expresión lambda en python

Si hago dos listas de funciones: def makeFun(i): return lambda: i a = [makeFun(i) for i in range(10)] b = [lambda: i for i in range(10)] ¿Por qué las listas a y b no son iguales? Por ejemplo: >>> a[2]() 2 >>> b[2]() 9

Ámbito de locking en Python

Cuando usted codifica en otros idiomas, a veces creará un ámbito de bloque, como este: statement … statement { statement … statement } statement … statement Un propósito (de muchos) es mejorar la legibilidad del código: mostrar que ciertas declaraciones forman una unidad lógica o que ciertas variables locales se usan solo en ese bloque. […]

Accede a ti mismo desde el decorador

En el método setUp () de unittest, he configurado algunas variables propias , a las que luego se hace referencia en pruebas reales. También he creado un decorador para hacer algunos registros. ¿Hay alguna forma en la que pueda acceder a esas variables propias desde el decorador? En aras de la simplicidad, estoy publicando este […]