python 导包语法 import package as name 和 from package import name 的区别
生活随笔
收集整理的這篇文章主要介紹了
python 导包语法 import package as name 和 from package import name 的区别
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
今天在導包的時候:
# from easydict import EasyDict as edict # 成功 # import easydict.EasyDict as edict # 失敗結果:
--------------------------------------------------------------------------- ModuleNotFoundError Traceback (most recent call last) <ipython-input-209-21c167f50be7> in <module>1 # from easydict import EasyDict as edict # 成功 ----> 2 import easydict.EasyDict as edict # 失敗ModuleNotFoundError: No module named 'easydict.EasyDict'原因:
Python中的import語句,即以下兩種形式 import <some_package> [as <some_name>] from <some_package> import <something> [as <some_name>] (as <some_name>是重命名的部分,是可選的,這里不再贅述) 除了最終導進來的東西名字不同,還有個很多資料不曾提及的區(qū)別——前者只能導入包或者模塊,不能導入模塊中定義的類和函數(shù)等,而后者可以導入任何東西。 你這里的easydict就是一個模塊,而EasyDict顯然是這個模塊給你定義的一個類。 所以import easydict.EasyDict是不允許的,因為這條語句只能導入模塊。參考文章:python 的兩種導包方式為何結果不同? - 追遠·J的回答 - 知乎
再做一個示例:
from core.config import cfg從core包中的config模塊導入cfg(類或函數(shù)或變量)
但如果要這樣寫就不行:
import core.config.cfg # 錯誤再加一個
from module import 和 import module之間的不同。使用 import module,模塊自身被導入, 但是它保持著自已的名字空間,這就是為什么你需要使用模塊名來訪問它的函數(shù)或屬性(module.function) 的原因。但是使用 from module import,實際上是從另一個模塊中將指定的函數(shù)和屬性導入到你自己的名字 空間,這就是為什么你可以直接訪問它們卻不需要引用它們所來源的模塊的原因。參考文章:Python兩個內置函數(shù)——locals 和globals (學習筆記)
總結
以上是生活随笔為你收集整理的python 导包语法 import package as name 和 from package import name 的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pycharm 黄色(黄字)高亮警告 D
- 下一篇: python中模块(Module)和包(