Estoy intentando importar un módulo desde dentro de una función y tenerlo disponible para todo mi archivo de la misma manera que si importara fuera de cualquier función y antes que el resto del código. La razón por la que está en una función es porque no tengo mucho control sobre la estructura del script. ¿Es esto posible sin recurrir a cosas como hackear __builtin__ o pasar lo que necesito a mi código?¿Es posible importar al alcance global desde dentro de una función (Python)?
Respuesta
¿Qué tal algo así como globals()["os"] = __import__("os")?
supongo que esto podría ser envuelto en una función genérica si quería ya que el nombre del módulo es una cadena.
Esto es bueno porque el índice se puede usar para emular el comportamiento de "importar como" que no está (creo) integrado en '__import __()'. Resulta que esto no resuelve mi problema, pero responde la pregunta que hice. – scott77777
Al ver sus nuevos comentarios, quiero hacer hincapié en que esto parece innecesario. En realidad está modificando el script más importando dentro de una función que importando en la parte superior del script de la manera normal. Aún así, en el espíritu de responder la pregunta, estoy dejando mi respuesta anterior.
Sinceramente no estoy seguro de que esta es la forma correcta de hacer esto, pero una rápida verificación confirma que si se declara el nombre del módulo como global
dentro de la función antes de importar, que se importa en el espacio de nombres global.
>>> def import_re():
... global re
... import re
...
>>> re
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 're' is not defined
>>> import_re()
>>> re
<module 're' from '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/re.pyc'>
No hagas esto a menos que realmente tengas que hacerlo, y luego escríbelo en grandes letras rojas, por así decirlo.
- 1. Cambiar una variable global desde dentro de una función PHP
- 2. Alcance de la función declarada dentro de una función
- 3. Importar la función C++ al programa Python
- 4. ¿es posible no devolver nada desde una función en python?
- 5. ¿Es posible sobrecargar/importar en Python?
- 6. ¿Es posible importar un archivo python compilado?
- 7. ¿Es posible reemplazar una función dentro de una clase PHP?
- 8. ¿Cómo declarar una variable global desde dentro de una clase?
- 9. ¿Es posible acceder al cierre de una función?
- 10. MATLAB "echo sobre" dentro de una función. ¿Es posible?
- 11. ¿Es posible acceder al key_name de un objeto desde dentro de una plantilla jinja2?
- 12. Modificación de una variable global dentro de una función
- 13. ¿Es posible incluir/importar código al Manifiesto de Android?
- 14. ¿Es posible declarar una función dentro de GSP?
- 15. ¿Es posible llamar a un módulo de Python desde ObjC?
- 16. jQuery/Javascript: ¿Definir una variable global dentro de una función?
- 17. ¿Es posible llamar al método dentro de una aplicación Java desde una JVM diferente?
- 18. Configuración Server.ScriptTimeout de alcance global?
- 19. JavaScript: alcance global
- 20. ¿Cuál es el alcance de una función c definida dentro de la clase objetivo-c?
- 21. ¿Es posible importar mensajes al emulador de Android?
- 22. BlackBerry - KeyListener con alcance global
- 23. Alcance variable: este.remove no es una función
- 24. ¿Cuál es el alcance de una función en Javascript/ECMAScript?
- 25. Acceso explícito al alcance integrado de Python
- 26. JavaScript: ¿declara alcance global para la función anidada?
- 27. ¿Cómo acceder a una variable global de Python desde C?
- 28. ¿Es posible volver dos listas de una función en Python
- 29. acceso variable global desde dentro de una clase
- 30. ¿Es posible usar re2 desde Python?
No hagas eso si te importa la próxima persona que tenga que leer tu código (probablemente tú mismo). Parece que está utilizando una mala práctica organizativa como excusa para una mala práctica de codificación; intenta arreglar la causa raíz. – msw
Estoy modificando un proyecto de código abierto e intentando cambiar el mínimo absoluto necesario. – scott77777
Entonces, al tratar de cambiar el mínimo necesario, lo hará incomprensible para todos los demás contribuyentes. Esa es una mala compensación. – msw