簡體   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