關於Python模組中 init

2021-10-08 15:21:44 字數 3706 閱讀 3849

區分乙個含有python指令碼的資料夾python包可以執行import package操作的資料夾)的標誌就是看,這個資料夾下有沒有__ini__.py檔案,當乙個資料夾下有這個檔案,你可以進行匯入相關操作,但是如果這個資料夾沒有這個檔案,那麼python直譯器是沒有辦法去執行import操作的,直譯器看待你建立這個「包」就是乙個資料夾。

那麼怎麼把資料夾當做包來匯入呢?

…資料夾下建立乙個__init__.py 檔案啊!╮(╯▽╰)╭

包下的__init__.py 檔案定義了包的屬性和方法。其實它可以什麼也不定義;可以只是乙個空檔案,但是必須存在。

包的屬性方法,什麼意思呢?我們拿flask-login這個包來舉例。

以下是flask-login包的__init__.py檔案的全部內容,我們可以看到這個檔案做了什麼事情呢?有包的介紹,開發時間,更新版本,以及license等資訊。

除此還有預先匯入的包下的其他的模組,因為在init檔案中預先匯入了這些模組,你在安裝了flask-login包之後,才能使用如from flask-login import login_manager這樣的語句,亦或是import flask-login,然後在**中使用flask-login.login_manager去呼叫相關模組。

如果__ini__.py為空,你用import flask-login啥都做不了,如果這時候再用包.模組名的方式呼叫,就會報attributeerror: 'module' object has no attribute 'module1'. (^_−)☆

,]是不是奇怪這個__all__列表是幹嘛的,為嘛沒解釋,沒寫漏。( ̄へ ̄) 你在寫**的時候有沒有用過fom flask-login import *這種懶人寫法?現在懂了嗎,這個imprt *全部匯入的就是這個__all__列表中的內容~~~

列表__all__,可以控制*所表示要引入的東西(模組,函式,類等)

其實__init__.py 檔案和其他py檔案一樣,是可以寫**的,除了預定義和預匯入等初始化操作,如果包還有其他初始化操作,你可以吧**寫在這裡,python直譯器在載入包的時候,會首先執行__init__.py檔案,比如你寫的爬蟲包的預載入、預定義的等**。

Python模組包中 init

在eclipse中用pydev開發python指令碼時,我遇到了乙個這樣的現象,當我新建乙個pydev package時,總會自動地生成乙個空的 init py檔案,因為是python新手,所以很不了解這個空檔案的作用是什麼,因為沒有什麼東西可寫在這裡,所以我直接把這個檔案給刪掉了,結果我的包圖示自...

Python模組包中 init

在eclipse中用pydev開發python指令碼時,我遇到了乙個這樣的現象,當我新建乙個pydev package時,總會自動地生成乙個空的 init py檔案,因為是python新手,所以很不了解這個空檔案的作用是什麼,因為沒有什麼東西可寫在這裡,所以我直接把這個檔案給刪掉了,結果我的包圖示自...

Python模組包中 init

原文 本人有刪改 參考 python packages init py 包的精髓在 init py 這個檔案 init py 檔案 init py 控制著包的匯入行為。假如 init py 為空,那麼僅僅匯入包是什麼都做不了的。import package1 package1.module1 tra...