Python: ¿Por qué no puedo modificar el alcance actual dentro de una función utilizando los locales ()?

StackOverflow https://stackoverflow.com/questions/686715

  •  22-08-2019
  •  | 
  •  

Pregunta

¿Por qué crear / modificar un miembro de gente () no funciona dentro de una función?

Python 2.5 (release25-maint, Jul 20 2008, 20:47:25)
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
Type "help", "copyright", "credits" or "license" for more information.

>>> # Here's an example of what I expect to be possible in a function:
>>> a = 1
>>> locals()["a"] = 2
>>> print a
2

>>> # ...and here's what actually happens:
>>> def foo():
...  b = 3
...  locals()["b"] = 4
...  print b
...
>>> foo()
3
¿Fue útil?

Solución

¿Por qué es así? Está diseñado para devolver una representación, y nunca fue pensado para la edición de los locales. No es siempre garantiza que funcione como herramienta de este tipo, como el documentación advierte .

Otros consejos

locales () devolverá una copia del espacio de nombres (que es lo contrario de lo globales () lo hace). Esto significa que cualquier cambio que realice en el diccionario devuelto por los locales () no tendrá ningún efecto. Compruebe buceo en en Python en el ejemplo 4.12.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top