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