Escriba algunas líneas de código Python Xque no hagan referencia a ninguna variable global, de modo que
def method():
X
print(a)
method()
imprime 1pero
def method():
X
X
print(a)
method()
impresiones 2.
Por lo tanto, me gusta ser muy estricto, pero parece varsy localsen 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
varsolocals) - +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 varsy locals? Sospecho que puede, aunque aún no he descubierto exactamente cómo ...
X, pero hay otras opciones.