Escriba algunas líneas de código Python X
que no hagan referencia a ninguna variable global, de modo que
def method():
X
print(a)
method()
imprime 1
pero
def method():
X
X
print(a)
method()
impresiones 2
.
Por lo tanto, me gusta ser muy estricto, pero parece vars
y locals
en realidad son variables globales en Python:
def test_global_1():
global vars, locals
vars = lambda: 2
locals = lambda: 3
def test_global_2():
print(vars())
print(locals())
test_global_1()
test_global_2()
Además, parece que a la gente le gustaría ver criterios objetivos de ganar para acertijos como este. La longitud del código realmente no se siente bien aquí, entonces ¿tal vez podríamos hacer un sistema de puntos brownie para varias características nuevas del código? No estoy seguro de cuáles podrían ser exactamente, pero aquí hay un comienzo:
- +1 para realmente no hay globals (no
vars
olocals
) - +1 por ser el primero en publicar una técnica en particular
- +1 para la solución más corta publicada
- +1 para una solución que involucra solo una declaración de Python
- +1 para "hacks" interesantes como unirse a no-límites léxicos
- +1 por no usar excepciones
Y si puede pensar en más, puede editar esta pregunta para agregarla a la lista.
¿Se puede resolver este problema sin usar excepciones y sin usar globales como vars
y locals
? Sospecho que puede, aunque aún no he descubierto exactamente cómo ...
X
, pero hay otras opciones.