PythonStudy——跨文件夾導入模塊


# 1.如果a文件夾所在目錄在環境變量,a文件夾中的ma模塊可以被以下方式導入
import a.ma  |  from a import ma 

# 2.如果a文件夾所在目錄在環境變量,a文件夾中的b文件夾的mb模塊可以被以下方式導入
import a.b.mb  |  from a.b import mb

# 3.如果a文件夾所在目錄在環境變量,a文件夾中的b文件夾的mb模塊中的bbb名字要被直接導入 
import a.b.mb.bbb  # 錯誤:所有.左側必須是文件夾 *****
from a.b import mb.bbb # 錯誤:所有.左側必須是文件夾
from a.b.mb import bbb # 正確

模塊的兩種被執行方式

# 總結: 
# 1.一個py文件作為自執行文件,__name__變量的值為 '__main__'
# 2.一個py文件作為模塊被導入執行,__name__變量的值為 '文件(模塊)名'


# 如何區別兩種方式,可以讓一個文件可以自執行,也可以被導入執行 共存
# 在這樣的py文件中寫:
if __name__ == '__main__':
    # 自執行的邏輯 => 因為在文件作為模塊使用時 __name__為文件名,不滿足條件
    pass

# 包:一系列模塊的集合體,用文件夾來管理一系列有聯系功能的模塊,該文件夾我們稱之為包,文件夾名就是包名


# 包 與 普通文件夾存在區別:包的文件夾中一定存在一個__init__.py文件
#        -- py2:必須創建  py3:建議創建,不創建系統會自動創建


# __init__.py文件
# 1)產生一個全局名稱空間,提供給包的,就代表包的名稱空間
# 2)管理 包可以直接點出來使用的 名字


# 導包完成的三件事
# 1)編譯形成包中__init__.py文件的pyc文件
# 2)執行__init__.py文件,形成一個全局名稱空間,將__init__.py文件中所有名字存放其中,該名稱空間就代表包的名稱空間
# 3)在導包的文件中,產生一個與包名相同的名字,指向包的名稱空間(__init__.py文件的全局名稱空間)

直接使用包中模塊

# 如果只是想作為普通文件夾,py3中可以省略__init__文件,本質上文件夾也是包

# 導入的手段:1.指名道姓到某一個模塊 | 2.指名道姓到某一個模塊中的名字

包的管理

# 在包中采用相對導入管理模塊或模塊中的名字


# 在包的__init__.py文件或是包中任意一個模塊中
# . 代表當前文件所在目錄
# .. 代表當前文件所在目錄的上一級目錄
# 注:.語法不能出包,因為包外的文件都能自執行,但擁有.開頭導入的文件不能自執行

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM