Python課堂筆記 第7章 包、模組、函式與變數作用域

cnnbull發表於2021-09-09

7-6 Python包與模組的名字
如果想讓普通的資料夾成為包,裡面必須包含init.py檔案,本身也是個模組,可以空著就用來資料夾是包,也可以在裡面寫程式碼,這個模組的名字就是包的名字,其他模組的名字是包名字.模組名字


7-7 import匯入模組
引用其他模組的變數需要匯入其他模組
seven包裡面有三個模組,c1.py,c2.py,init.py
c1模組:a = 2
c2模組:import c1
print(c1.a)
如果將c1從seven包移到t包(t包是seven包子包)
c2模組:import t.c1
print(t.c1.a)
也可以用as簡化字元路徑
c2模組:import t.c1 as m
print(m.a)
雖然import函式容易導致名稱空間過長問題,但是可以直接看出變數屬於哪個模組哪個包


7-8 from import匯入變數
from t.c1 import a
print(a)

可以一次性引入所有變數
from t.c1 import

print(a)
print(b)
print(c)

如果想只匯入c1中的a,c,則使用雙下劃線all語句
c1模組:
all= ['a','c']
a = 2
c = 3
d = 4
c2模組:
from t.c1 import *
print(a)
print(b)
print(c)
或from t.c1 import a,c


7-9 init.py的用法
匯入變數過多時,一行末尾加換行,或者用()將所有變數括起來
all= ['c1']只匯入c1模組
在t包中的init.py模組裡面引入很多系統庫,在其他模組中只要寫import t則可以實現批次匯入


7-10 包與模組的幾個常見錯誤
包和模組不會被重複匯入,無論一個模組被其他多少個模組匯入過,都只會匯入1次
避免迴圈匯入,模組c2中匯入c1,然後c1中又匯入c2
在一個模組匯入另一個模組,會執行這個模組裡面所有的程式碼


7-12 入口檔案和普通模組內建變數的區別
print('name:' +name)
print('package:' +(package or '當前模組不屬於任何包'))
print('doc:' +(doc or '當前模組沒有文件註釋'))
print('file:' +file)
一個檔案如果被當做入口檔案,則該檔案不屬於任何包,且該檔案的名字會輸出main


7-13 name的經典應用
用dir()可以顯示出當前模組所有內建變數

列印系統的內建變數
import sys
infos = dir()
print(infos)


7-14,15 相對匯入和絕對匯入
一個模組的頂級包和main.py(入口檔案)所在的層級有關
絕對路徑必須從頂級包開始
import不可以使用相對路徑匯入
相對匯入:.本級目錄 ..上一級目錄 …上上級目錄
用form import 進行相對路徑匯入

不可以引入超過頂級包的路徑
m2的頂級包是package2
m5和main.py是同一級別,main.py不屬於任何包
入口檔案不可以使用相對路徑
用python -m指令可以將入口檔案當作普通模組執行

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2524/viewspace-2799665/,如需轉載,請註明出處,否則將追究法律責任。

相關文章