[英]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.