提问人:user3103957 提问时间:1/5/2023 更新时间:1/5/2023 访问量:73
Python 导入模块方法
Python import module approaches
问:
我创建了一个名为 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
当你命令时,你是在对 python 说“嘿!请带上mod书和它的printme章节作为整本书,并删除其他章节”。现在,每当你需要参考这本书的内容时,你都需要说出你的新书的名字,它只有一章。import mod.printme
mod.printme.foo()
mod
printme
当你命令你说:“嘿!请把 mod 书中的章节打印给我,作为一本书本身”。现在,每当你需要引用本书的内容时,你都需要说,因为这一章已经变成了书,所以只需要书名,在你的情况下,是需要的。from mod import printme
printme.foo()
printme
如果你想让 Python 在你当前的书中(你正在写的书,就像在 Python 中每个文件都是一个模块一样)中带来所有章节的标题,你可以使用 .它将仅带来所有标题。所以你不需要引用 ,就可以了。printme
from mod.printme import *
book/chapter
foo()
他们以这种方式工作,因为他们被赋予了这种方式。
评论
from mod.printme import *
from mod.printme import foo
评论
mod.printme.function()
mod
printme.function()
printme