好的,所以我知道from-import
与“完全”相同import
,但这显然不是因为命名空间的填充方式不同。
我的问题主要是因为我有一个utils
我的应用程序中的每个其他模块都使用一个或两个函数的模块,我正在努力合并标准库logging
模块,据我所知,我需要这样做:
import logging
logging.basicConfig(filename="/var/log") # I want file logging
baselogger = logging.getLogger("mine")
#do some customizations to baselogger
然后要在不同的模块中使用它,我将再次导入日志记录:
import logging
logger = logging.getlogger("mine")
# log stuff
但我想知道的是如果我做from utils import awesome_func
我的记录器一定会被设置吗?日志记录模块是否会按照我想要的方式设置?
这也适用于其他通用设置。
你的问题的答案是肯定的。
有关导入过程的详细说明,请参阅 Frederik Lundh 的“导入Python模块 http://effbot.org/zone/import-confusion.htm".
特别是,我将引用回答您的查询的部分。
Python 如何导入模块?
[...]
- 创建一个新的空模块对象(这本质上是一个字典)
- 将该模块对象插入 sys.modules 字典中
- 加载模块代码对象(如有必要,请先编译模块)
- 在新模块的命名空间中执行模块代码对象。代码分配的所有变量都可以通过模块对象使用。
以及关于使用from-import
:
导入模块的方法有很多种
[...]
从 X 导入 a、b、c导入模块 X,并在当前命名空间中创建对给定对象的引用。或者换句话说,您现在可以在程序中使用 a 和 b 和 c。
请注意,我忽略了一些事情。整个文档值得阅读,它实际上很短。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)