x=True
def stupid():
x=False
stupid()
print x
Respuesta
No necesita declarar una variable de función local en Python. La "x = False" se refiere a una x local a stupid(). Si realmente desea modificar los x globales dentro estúpida:
def stupid():
global x
x=False
Tenga en cuenta que si hacía 'print x' dentro de la función, usaría la' x' global. Solo la * asignación * crea la nueva variable local. – quark
La x en la función estúpida() es una variable local, por lo que tienes 2 x variables con nombre.
Porque el alcance de x es local a la función stupid(). una vez que llama a la función, y termina, está fuera de su alcance, e imprime el valor de "x" que está definido fuera de la función estúpida() - y, la x que está definida dentro de de la función estúpida() no existe en la pila más (una vez que se acaba la función)
edición después de su comentario:
el exterior x es referenciado cuando se imprimió, igual que lo hizo.
interior x solo se puede hacer referencia mientras su dentro de la función estúpida(). para que pueda imprimir dentro de esa función para que pueda ver qué valor tiene la x dentro de ella.
Acerca de "global"
- funciona & responde a la pregunta, al parecer no
- una buena idea utilizar muy a menudo cuestiones
- causas de legibilidad y escalabilidad (y potencialmente más)
- dependiendo de su proyecto, es posible que desee reconsiderar el uso de una variable global definida dentro de una función local.
Agregue "global x" antes x = Falso en la función y se imprimirá Verdadero. De lo contrario, hay dos "x", cada una en un ámbito diferente.
Para responder a su pregunta siguiente, utilice global
:
x=True
def stupid():
global x
x=False
stupid()
print x
jaja buena respuesta preventiva. – Triptych
Si desea acceder a la variable global x de un método en el pitón, que tiene que hacer de manera explícita:
x=True
def stupid():
global x
x=False
stupid()
print x
Hipo raro allí. :( – Stobor
- Dado que está realizando una asignación a
x
dentro destupid()
, Python crea una nuevax
dentro destupid()
. - Si fuera solamente lectura de
x
dentrostupid()
, Python sería, de hecho, utilizan elx
mundial, que es lo que quería. - Para forzar a Python a usar el global
x
, agregueglobal x
como la primera línea dentro destupid()
.
Si ese código es todo dentro de una función, sin embargo, global
no va a funcionar, porque entonces no habría x
una variable global. En Python 3.x, introdujeron la palabra clave nonlocal
, lo que haría que el código funcione independientemente de si se está en el nivel superior o dentro de una función:
x=True
def stupid():
nonlocal x
x=False
stupid()
print x
- 1. ¿Por qué console.log (true, '\ t') imprime true "\t"?
- 2. ¿Por qué este código solo imprime 42?
- 3. ¿Por qué document.writeln ("a" || "b") imprime "a" intead de "true"?
- 4. ¿Por qué este programa python a veces no puede salir?
- 5. ¿por qué este programa python no está funcionando?
- 6. ¿Por qué este programa C imprime caracteres extraños en la salida?
- 7. ¿por qué este programa c no imprime la primera instrucción printf?
- 8. ¿Por qué este programa PHP no funciona?
- 9. ¿Por qué este programa es válido?
- 10. ¿Por qué este programa intercambia los valores?
- 11. ¿Por qué sigue este programa estrellarse
- 12. ¿Por qué este código se imprime dos veces?
- 13. 'True' y 'falso' en Python
- 14. Java: ¿por qué imprime nulo?
- 15. ¿Qué pasa con este programa de Clojure?
- 16. ¿Por qué ocurre este AttributeError en python?
- 17. ¿Por qué `object()> 0` True en Python?
- 18. ¿Por qué este 'por (;;)' bucles?
- 19. ¿Por qué este código Parallel.ForEach congela el programa?
- 20. ¿Por qué este programa C se compila sin un error?
- 21. ¿Por qué este programa C genera un número negativo?
- 22. ¿Por qué este programa entra en un bucle infinito?
- 23. ¿Por qué este simple programa CoreMIDI no produce salida MIDI?
- 24. ¿Por qué este programa OCaml es más rápido que mi programa C?
- 25. ¿Por qué no se imprime mi cadena?
- 26. ¿Por qué console.dir ('') imprime "sin propiedades"?
- 27. ¿Por qué printf() no imprime nada antes de dormir()?
- 28. ¿Qué pasa con este programa C
- 29. Python: ¿por qué este código tarda una eternidad (bucle infinito?)
- 30. ¿Por qué goteo la memoria con este ciclo de python?
bien de seguimiento, ¿cómo hacer referencia a que el exterior x ? –
wow, alguien respondió eso antes de que lo pidiera :) –
Ahora reemplace 'x = True' con' x = [1] ', y reemplace' x = False' con 'x [0] = 2' y vuelva a ejecutar su código .. –