Bien. Entonces mi pregunta es simple: ¿cómo puedo asignar el valor de una variable usando eval en Python? Intenté eval('x = 1')
pero eso no funcionará. Devuelve un SyntaxError. ¿Por qué no funciona esto?¿Cómo puedo asignar el valor de una variable usando eval en python?
Respuesta
Porque x=1
es una afirmación, no una expresión. Use exec
para ejecutar instrucciones.
>>> exec('x=1')
>>> x
1
Por cierto, hay muchas maneras de evitar el uso de exec
/eval
si todo lo que necesita es un nombre dinámico para asignar, por ejemplo, se puede usar un diccionario, el setattr
function, o la :locals()
dictionary
>>> locals()['y'] = 1
>>> y
1
actualización: Aunque el código anterior funciona en el REPL, no va a funcionar dentro de una función. Vea Modifying locals in Python para algunas alternativas si exec
está fuera de duda.
Y, por cierto, si quiere cambiar una variable como esta, probablemente quiera un diccionario en su lugar. –
Probablemente use un diccionario la próxima vez que haga algo como esto. –
Python dice que no debe modificar 'locals()'. (http://docs.python.org/2/library/functions.html#locals) ¿Hay alguna otra forma de usar la asignación sin el mal completo de 'eval()'? –
No se puede, ya que la asignación de variables es una declaración, no una expresión, y eval
solo puede expresiones eval
. Use exec
en su lugar.
Mejor aún, no use ninguno de los dos y díganos qué es realmente tratando de hacer eso para que podamos encontrar una solución segura y sensata.
x = 0 def assignNewValueToX(v): global x x = v eval('assignNewValueToX(1)') print(x)
Funciona ... porque python realmente ejecutará assignNewValueToX para poder evaluar la expresión. Se puede desarrollar más, pero estoy seguro de que hay una mejor opción para casi cualquier necesidad que pueda tener.
Casi, pero necesito asignar dinámicamente el nombre de la variable. Gracias sin embargo. –
- 1. ¿Cómo asignar un valor a una variable dinámica usando eval?
- 2. ¿Cómo puedo asignar el valor de salida insertado a una variable en el servidor sql?
- 3. ¿Cómo asignar variable a python usando el nuevo soporte de python de GDB?
- 4. Cómo cerrar un archivo en Python sin asignar una variable
- 5. cómo asignar valor de variable como nombre de variable en un hash?
- 6. Cómo asignar una variable en IF, y luego devolverla. (Python)
- 7. Usando el valor de una variable como otro nombre de variable en Ruby
- 8. asignar operador a la variable en python?
- 9. Python, ¿cómo puedo cambiar el valor de una variable en el ámbito principal?
- 10. imprimir el valor de una variable en Python/Django?
- 11. asignar el valor devuelto por una función de alguna variable usando javascript
- 12. ¿Cómo puedo asignar la salida de una función a una variable usando bash?
- 13. valor Asignar NULL a Boolean variable de
- 14. alcance Variable + eval en Clojure
- 15. clase Asignar valor booleano en Python
- 16. ¿Cómo puedo asignar una fila a una clase usando Anorm?
- 17. ¿Cómo asignar valor a la variable de una secuencia de cadenas en groovy?
- 18. Uso de eval en Python?
- 19. ¿Puedo declarar y asignar simultáneamente una variable en VBA?
- 20. Python: El uso de vars() para asignar una cadena a una variable
- 21. ¿Cómo puedo asignar un valor a Html.Hiddenfor desde jQuery/JavaScript?
- 22. ¿Puedo asignar valores en RowProxy usando sqlalchemy?
- 23. ¿Por qué no es necesario asignar el valor de retorno de un método a una variable?
- 24. Asignar JavaScript variable en variable de Java en JSP
- 25. Cómo asignar un valor de cadena a una variable de cadena en C++
- 26. ¿Cómo puedo asignar una cadena a una enumeración en lugar de un valor entero en C#?
- 27. ¿Cómo asignar el resultado de la expresión anterior a una variable?
- 28. Cómo mostrar el valor de una variable en la pantalla
- 29. ¿Cómo puedo obtener el valor de la variable de configuración 'ft_min_word_len' de MySQL usando PHP?
- 30. AS3 - ¿Puedo detectar el cambio de valor de una variable usando addEventListener?
¿Qué estás tratando de hacer? Lo que sea que estés haciendo no deberías usar eval. – babsher