我想从一个函数内部导入一个模块,并让它可用于我的整个文件,就像我在外部导入任何函数之前以及在所有其他代码之前一样。它在函数中的原因是因为我对脚本的结构没有太多的控制。这是可能的,而不诉诸于黑客__builtin__或传递我所需要的全部代码?是否可以从函数(Python)中导入到全局范围?
8
A
回答
9
如何像globals()["os"] = __import__("os")?
我想这一点,如果你想因为模块名称是一个字符串可以被包裹在一个通用的功能。
+0
这是很好的,因为索引可以用来模拟“import import”行为,而不是(我相信)内置到'__import __()'中。事实证明,这并不能解决我的问题,但它确实回答了我问的问题。 – scott77777 2011-06-14 18:10:10
7
看到您的新评论,我想强调这听起来没有必要。您实际上是通过在函数内导入来修改脚本更多,而不是通过以正常方式导入脚本的顶部。尽管如此,本着回答问题的精神,我将离开我以前的答案。
我诚实不能肯定这是做了正确的方式,但快速检查确认,如果你在导入之前的函数内声明模块名作为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'>
不要这样做,除非你真的必须 - 然后用红色大写字母来写。
相关问题
- 1. 我可以在python中导入全局函数吗?
- 2. 是否可以在全局范围内设置qmake调试?
- 3. 如何从全局范围调用jQuery范围内的函数?
- 4. 嵌套函数可以放在Javascript的全局范围内吗?
- 5. Python全局变量范围
- 6. 在C函数中声明的函数是否可以在全局范围内使用?
- 7. 从Python全局范围解析变量
- 8. 是否有可能使php全局在函数范围内自动提供?
- 9. 是一个全局范围的函数内的JavaScript函数?
- 10. 从全局范围访问函数内定义的函数?
- 11. Javascript函数未访问全局范围?
- 12. 全局范围内的函数
- 13. 全局()函数内部范围
- 14. Python“导入”范围
- 15. 为什么我可以从全局范围调用私有构造函数?
- 16. 如果我可以在node-mysql的回调函数中执行“require”,模块函数是否会添加到回调范围或全局范围?
- 17. 是否可以模拟从golang包中导入的函数?
- 18. 是否可以在Python中的函数中定义全局变量
- 19. 使用boost-python执行python函数(不是全局范围语句)
- 20. 是否可以在函数中使用非全局变量?
- 21. 函数内部从文件到全局范围的点源函数
- 22. 是否有像php中的全局范围魔术方法__call()函数?
- 23. 全局函数是否可以使用块参数?
- 24. 是否可以限制javascript函数的范围?
- 25. 是否可以在函数范围内声明/实现模板?
- 26. Python函数范围
- 27. Python范围函数
- 28. 在Python中导入的模块/函数的范围
- 29. 全局变量在函数范围内是未定义的
- 30. 如何从函数调用具有全局范围的新类
不要这样做,如果你关心下一个必须阅读你的代码的人(可能是你自己)。听起来你正在使用糟糕的组织实践作为糟糕的编码实践的借口;尝试解决根本原因。 – msw 2011-06-14 17:35:17
我正在修改一个开源项目并尝试更改必要的绝对最小值。 – scott77777 2011-06-14 17:36:26
所以通过尝试改变必要的最低限度,你会让所有其他贡献者感到难以理解。这是一个糟糕的折衷。 – msw 2011-06-14 17:43:53