歡迎使用CSDN markdown編輯器

2021-07-17 03:26:59 字數 1811 閱讀 6872

標籤(空格分隔): python

package,module是python中對外發布程式的封裝機制。

既然乙個package就是乙個包含了python檔案的目錄,那麼,如何判定這個資料夾就是乙個package呢?

假如在當前目錄有乙個名叫http的空目錄,假如python認為它就是http的package,那麼程式就無法呼叫真正的http包了。

所以python規定,只有當乙個目錄含有__init__.py時,才能確定該目錄是乙個合法的package

如果該檔案僅僅是為了判定該目錄是不是乙個包,那麼每個包目錄下有乙個空的且檔名為__init__.py不就可以了? 拿衣服呀~

python做了對該檔案做了更加詳細的規定,使得檔案python的匯入過程和該檔案息息相關

只要被import的包,模組,符號是屬於乙個package的,那麼這個包的__init__.py就會在之前被import。

比如 package1/subpackage/module.py 中有乙個全域性變數var

import package1.subpackage.module.var

from package1/subpackage import

module

這兩句import語句當中,import都會先import package1的__init__.py,然後再import subpackage的__init__.py

from *** import yyy

***:

可以是package,module

yyy:

當***是package時,yyy可以是module或package

當***是module時,yyy只能是module內的符號

import ***

這種方式比較簡單,***可以是 package

module symbol

from *** import *
如果***是乙個package,那條語句相當於

import ***.__init__

for i in ***.__init__.__all__:

import i

例子:

#file : ***.__init__

__all__= [package1, module1,symbol]

那麼當執行from *** import *,相當於

import ***.__init__

import package1

import module1

import symbol

p.s. 如果沒有定義__all__,那麼只有__init__.py被匯入

如果***是乙個module

在模組(*.py)中使用意為匯出all列表裡的類、函式、變數等成員,

否則將匯出moduala中所有不以下劃線開頭(私有)的成員,

在模組中使用all屬性可避免在相互引用時的命名衝突

reference:

歡迎使用CSDN markdow

本markdown編輯器使用stackedit修改而來,用它寫部落格,將會帶來全新的體驗哦 markdown 是一種輕量級標記語言,它允許人們使用易讀易寫的純文字格式編寫文件,然後轉換成格式豐富的html頁面。維基百科 使用簡單的符號標識不同的標題,將某些文字標記為粗體或者斜體,建立乙個鏈結等,詳細...

歡迎毛毛與妞妞使用CSDN markdown編輯器

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...

歡迎使用CSDN markdow1n編輯器

本markdown編輯器使用stackedit修改而來,用它寫部落格,將會帶來全新的體驗哦 markdown 是一種輕量級標記語言,它允許人們使用易讀易寫的純文字格式編寫文件,然後轉換成格式豐富的html頁面。維基百科 使用簡單的符號標識不同的標題,將某些文字標記為粗體或者斜體,建立乙個鏈結等,詳細...