繁体   English   中英

Python 导入模块方法

[英]Python import module approaches

我创建了一个名为 package 的 mod,并在其中放置了一个 python 文件(又名:模块)。 python 文件的名称是 printme.py。

我通过以下几种方式导入模块。

import mod.printme 

 ['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'mod']

执行此操作后,名称空间将附加值 mod。 我希望它具有值 printme (这是实际的模块名称)

from mod import printme

['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'printme']

执行此操作后,名称空间正确地附加了预期的值 printme。

从技术上讲,两者都应该在本地命名空间中导入模块 printme,我有点困惑为什么第一种方法不将 printme 模块名称放在本地命名空间中。

有人可以帮助我理解。

谢谢!

假设mod是一本书, printme.py是一章。

当您命令import mod.printme时,您是在对 python 说“嘿。请将 mod book 和它的 printme 章节作为整本书并删除其他章节”。 现在每当你需要引用这本书的内容时,你需要说mod.printme.foo()因为你的新书的名字是mod并且它只有一章printme

当您from mod import printme命令时,您是在说:“嘿。请将 mod book 中的 print me chapter 作为一本书本身”。 现在,每当你需要引用本书的内容时,你需要说printme.foo()因为章节已经变成书了,所以只需要书名,在你的例子中是printme

如果你想 Python 将所有章节printme的标题带入你当前的书(你正在写的书,因为 Python 每个文件都是一个模块)你可以使用from mod.printme import * 它只会带来所有标题。 所以你不需要参考书book/chapter ,只需要foo()就可以了。

他们以这种方式工作,因为他们被要求以这种方式工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM