Articles of scope de

¿Por qué una subfunción no hereda el scope en Python?

No entiendo por qué lo siguiente no funciona: def foo( x ): n = 1 summe = 0 def bar(): n -= 1 for i in range(0,10): y = x+i+n x += i summe += y print “{0} = {1} + {2} + {3}”.format(y,x,i,n) bar() print “summe =”, summe return summe ¿Por qué es que […]

Alcance de Python en la comprensión del dict.

>>> x = ‘foo’ >>> {0: locals().get(‘x’)} {0: ‘foo’} >>> {0: locals().get(‘x’ + spam) for spam in [”]} {0: None} ¿Cuál es la razón de esta discrepancia en el comportamiento?

error de scope en el cierre recursivo

¿Por qué funciona esto? def function1(): a = 10 def function2(): print a function2() pero esto no lo hace: def function1(): a = 10 def function2(): print a a -= 1 if a>0: function2() function2() Me sale este error: UnboundLocalError: local variable ‘a’ referenced before assignment

__main__ y scope en python

De alguna manera me sorprendió el siguiente comportamiento: def main(): print “%s” % foo if __name__ == “__main__”: foo = “bar” main() es decir, una función de módulo tiene acceso a las variables __main__ en __main__ . ¿Cuál es la explicación para ello?

Usando una variable en una sentencia try, catch, finally sin declararla afuera

Soy bastante nuevo en Python, aquí hay un código que estoy viendo: try: connection = getConnection(database) cursor = connection.cursor() cursor.execute(“some query”) except: log.error(“Problem.”) raise finally: cursor.close() connection.close() ¿Se está limpiando adecuadamente? En otros idiomas en los que he escrito, estoy acostumbrado a hacer algo como esto: connection = None cursor = None try: connection = […]

Dudas sobre el scope de la variable de Python

Posible duplicado: Breve descripción de las reglas de scope de Python Escribí dos funciones simples: # coding: utf-8 def test(): var = 1 def print_var(): print var print_var() print var test() # 1 # 1 def test1(): var = 2 def print_var(): print var var = 3 print_var() print var test1() # raise Exception En […]

¿Cómo se pueden crear nuevos ámbitos en python?

En muchos idiomas (y lugares) hay una buena práctica de crear ámbitos locales mediante la creación de un bloque como este . void foo() { … Do some stuff … if(TRUE) { char a; int b; … Do some more stuff … } … Do even more stuff … } ¿Cómo puedo implementar esto en […]

“Variable local referenciada antes de la asignación”: ¿solo funciones?

Toma el siguiente código: import something def Foo(): something = something.SomeClass() return something … Al parecer, este código no es válido: UnboundLocalError: local variable ‘something’ referenced before assignment … Como la variable local, something se crea, pero no se asigna, antes de que se evalúe el RHS de = . (Vea, por ejemplo, el comentario […]

Globos de Python, locales y UnboundLocalError

Me encontré con este caso de UnboundLocalError recientemente, lo que parece extraño: import pprint def main(): if ‘pprint’ in globals(): print ‘pprint is in globals()’ pprint.pprint(‘Spam’) from pprint import pprint pprint(‘Eggs’) if __name__ == ‘__main__’: main() Lo que produce: pprint is in globals() Traceback (most recent call last): File “weird.py”, line 9, in if __name__ […]

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