Python导入模块方法



我创建了一个名为mod的包,并在其中放置了一个python文件(又名:module)。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说"嘿!请带模书和它的printme章节作为一个完整的书,并删除其他章节。现在,当你需要引用这本书的内容时,你需要说mod.printme.foo(),因为你的新书的名字是mod,它只有一章printme

当你指挥from mod import printme时,你在说:"嘿!请带打印我章节在mod书作为一本书本身。现在,当你需要引用这本书的内容时,你需要说printme.foo(),因为章节已经变成了一本书,所以只需要书名,在你的情况下,printme,需要。

如果你想让Python把printme章的所有标题带到你的书中(你正在写的书,在Python中每个文件都是一个模块),你可以使用from mod.printme import *。它将只显示所有标题。所以你不需要引用book/chapter,只要foo()就可以了。

它们是这样工作的,因为它们是这样工作的。

相关内容

  • 没有找到相关文章

最新更新