模塊與包

模塊與包

一、什麼是包

內部有__ init__.py的文件夾,用於管理模塊,包也能夠被導入,而且能夠一併導入包下全部的模塊python

二、爲何要用包

包能夠幫咱們管理模塊,包裏面有一個__ init __.py,由它幫咱們管理模塊函數

三、怎麼使用包

import 包.模塊名測試

​ 包.模塊.名字code

from 包 import 模塊名blog

from 包.模塊名 import 模塊中的名字內存

四、導入包時發生的事情

  1. 當包被導入時,會以包裏的__ init __.py來產生一個名稱空間
  2. 而後執行__ init__.py文件,會將 __ init __.py中全部的名字添加到名稱空間
  3. 接着會將包下全部的模塊的名字加載到__ init __.py產生的內存空間中
  4. 導入模塊指向的名稱空間就是__ init __.py產生的名稱空間

模塊

一、什麼是模塊

模塊是一系列功能的結合體,本質上是一個個的.py文件get

模塊的三種來源

  1. python內置的模塊(python解釋器)requests

    好比:sys、time、os、turtleit

  2. 第三方的模塊(別寫的)編譯

    好比:requests

  3. 自定義的模塊(本身寫的)

    本身定義的py文件

防止導入模塊是自動執行測試功能

在測試代碼時寫加

快捷鍵:main+enter

if __name__ == "__main__":
    get_demo() # 測試模塊

模塊的四種表現形式

  1. 使用python編寫的py文件(瞭解)
  2. 編譯後的共享庫C或者C++庫(瞭解)
  3. 包下面帶有__ init__.py的一組py文件

  1. python解釋器下的py文件

    python解釋器下的文件夾

    ​ 一個個的py文件

二、爲何要使用模塊

模塊能夠幫助咱們更好的管理功能代碼,好比:函數....

能夠將項目拆分紅一個個功能,分別存放在不一樣的py文件(模塊)中

三、如何建立,編寫模塊,並使用模塊

建立:直接新建py文件

編寫:在py文件中直接編寫python代碼

使用:經過import關鍵字導入模塊或者經過from 。。。import。。。導入模塊

import 模塊 as 模塊的別名、from 包/模塊 import 模塊/(函數名、變量名、類名)as 模塊別名

  • 在使用模塊時須要注意,誰是執行文件,誰是被導入文件(模塊)

  • 模塊在首次導入時就已經將其加載到內存中了,當前文件查找的順序是先從內存中查找,以後的重複導入會直接從內存中查找,不會重複執行文件

四、模塊導入時

首次導入模塊會作三件事:

  1. 執行源(模塊)文件代碼
  2. 產生一個新的名稱空間來存放執行源(模塊)文件過程當中產生的名字
  3. 被導入模塊的名稱空間加載到內存中

五、循環導入問題

三個文件model1.py、model2.py、執行文件.py
# - model1.py
from model2 import name
name = 'jason'

# - model2.py
from model1 import name
name = 'tank'

# -執行文件.py
from model1 import name
print(name)
>>>
ImportError: cannot import name 'name' from 'model'

解決循環導入問題:

  1. 須要查找的名字放在導入模塊的上方
  2. 在函數內部導入,將模塊變成函數名稱空間中的名字
# 1.須要查找的名字放在導入模塊的上方
# - model1.py
name = 'jason'
from model2 import name

# - model2.py
from model1 import name
name = 'tank'

# -執行文件.py
from model1 import name
print(name)
>>>
jason
# 2.在函數內部導入,將模塊變成函數名稱空間中的名字
# - model1.py
def func():
    from model2 import name
name = 'jason'


# - model2.py
from model1 import name
name = 'tank'

# -執行文件.py
from model1 import name
print(name)
>>>
jason
相關文章
相關標籤/搜索