最頂級的組織結構:包(資料夾)
第二個層級:模組(檔案)
第三個層級:類
第四個層級:函式、變數(不屬於組織結構,是類本身的特性)
1.區分不同包的同名模組:包名.模組名
形成的模組的路徑叫做命名空間
2.乙個包下面可以有子包,模組可以和包平級
3.普通資料夾想要變成包必須要有__init__.py檔案
__init__.py本身也是乙個模組,可以不寫內容只是標註包
特殊的,__init__.py模組的名字就是包名
對於重複的定義可以從其他模組裡引用,不需要重複編寫。
1.語法:import 模組名
若被匯入模組在子包下面,要加上命名空間,語法:import 子包名.模組名
2.引用匯入模組的某乙個變數的語法:模組名.變數名
import t.c
print(t.c.a)
3.可以用as進行簡寫
舉例
import t.c as m
print(m.a)
#print(t.c.a)
1.匯入變數
from t.c import a
print(a)
#不需要寫成print(t.c.a)
2.匯入模組(不推薦)
from t import c
print(c.a)
3.引用大量變數時使用 * :
from c import *
4."*"會一次性的把模組下面所有的變數或者函式全部匯入進來,但是在實際的編碼過程中不太可能在引入的時候需要全部的變數,那麼就需要我們控制 * 的行為,讓 * 匯入的時候只匯入我們指定的變數。
#test1.c
__all__ = ['a','c'] #用內建變數__all__來控制 * 的選擇範圍
a = 1
b = 2
c = 3
d = 4
#test1.c2
from c import *
print(a)
print(c)
print(d) #d沒有被列印,報錯
執行結果:1 3
1.隱藏__pycache__資料夾:
檔案→首選項→設定→搜尋files.exclu,新增"**/_pycache_":true,儲存
2.__init__.py檔案的作用:
當包被匯入時,init.py會首先自動被執行
#t.__init__.py
a = 'this is a __init__.py file'
print(a)
#c11.py
import t #匯入包t,t裡面的__init__.py檔案就會被自動執行
執行結果:this is a __init__.py file
假如不匯入包,而是匯入包裡面模組的某個變數,init檔案依舊會自動執行
#t.c7.py
__all__ = ['a','c']
a = 2
c = 3
d = 4
#c12.py
from t.c7 import a
執行結果:this is a __init__.py file
3.__init__.py的應用場景:
#t.__init__.py
__all__ = ['c7'] #初始化*,標明哪些模組被匯出
#t.c7.py
__all__ = ['a','c']
a = 2
c = 3
d = 4
#t.c8.py
e = 2
f = 3
g = 4
#c11.py
from t import * #* 表示匯入 t 包裡的所有模組
print(c7.a) #c7在init中被定義,可引用
print(c8.e) #c8在init中未定義,不可引用
執行結果是2
4.__init__.py的重要作用
#t包下面的__init__.py
import sys #批量導入庫,內建標準庫
import datetime
import io
#c13.py
import t
print(t.sys.path) #在這裡插入**片
1.包和模組是不會被重複的匯入的,只會執行一次
2.避免迴圈匯入,不要形成閉環(多個模組之間形成閉環)
3.匯入模組的時候會執行模組裡所有的**
參考:
Python 五 包 模組 函式與變數作用域
condition 1 while condition 5 condition 1 print hello else print eof hello hello hello hello hello eof 主要是用來遍歷 迴圈 序列或者集合 字典 a a b c d 1,2,3 for x in a...
Python之模組與包
a 在 python 中,乙個.py檔案就稱之為乙個模組 module 大大提高了 的可維護性 編寫 不必從零開始。當乙個模組編寫完畢,就可以被其他地方引用 b 呼叫函式時用import a getpass模組提供了可移植的密碼輸入 import getpass getpass.getpass b ...
Python之模組與包
模組匯入過程 0.先判斷sys.modules字典中檢視模組是否已經存在,如存在則不做任何操作 1.從sys.path路徑下找到模組 2.建立模組的命名空間 3.把檔案中的名字都放到這個命名空間裡 import sys print sys.path import modue1 import只匯入一次...