最頂級的組織結構:包(資料夾)
第二個層級:模組(檔案)
第三個層級:類
第四個層級:函式、變數(不屬於組織結構,是類本身的特性)
1.區分不同包的同名模組:包名.模組名
形成的模組的路徑叫做命名空間
2.乙個包下面可以有子包,模組可以和包平級
3.普通資料夾想要變成包必須要有__init__.py檔案
__init__.py本身也是乙個模組,可以不寫內容只是標註包
特殊的,__init__.py模組的名字就是包名
對於重複的定義可以從其他模組裡引用,不需要重複編寫。
1.語法:import 模組名
若被匯入模組在子包下面,要加上命名空間,語法:import 子包名.模組名
2.引用匯入模組的某乙個變數的語法:模組名.變數名
importt.cprint(t.c.a)
3.可以用as進行簡寫
importt.c as m
(m.a)
#print(t.c.a)
1.匯入變數
from t.c importaprint
(a)#
不需要寫成print(t.c.a)
2.匯入模組(不推薦)
from t importcprint(c.a)
3.引用大量變數時使用* :
from c import *
4."*"會一次性的把模組下面所有的變數或者函式全部匯入進來,但是在實際的編碼過程中不太可能在引入的時候需要全部的變數,那麼就需要我們控制 * 的行為,讓 * 匯入的時候只匯入我們指定的變數。
#test1.c
__all__ = ['
a','
c'] #
用內建變數__all__來控制 * 的選擇範圍
a = 1b = 2c = 3d = 4 #
test1.c2
from c import *
(a)print
(c)print(d) #
d沒有被列印,報錯
執行結果:1 3
1.__init__.py檔案的作用:
當包被匯入時,init.py會首先自動被執行
#t.__init__.py
a = '
this is a __init__.py file
(a)
#c11.py
import t #
匯入包t,t裡面的__init__.py檔案就會被自動執行
執行結果:this
is a __init__.py file
假如不匯入包,而是匯入包裡面模組的某個變數,init檔案依舊會自動執行
#t.c7.py
__all__ = ['
a','c'
]a = 2c = 3d = 4 #
c12.py
from t.c7 import
a
執行結果:this
is a __init__.py file
2. __init__.py的應用場景:
#t.__init__.py
__all__ = ['
c7'] #
初始化*,標明哪些模組被匯出
#t.c7.py
__all__ = ['
a','c'
]a = 2c = 3d = 4 #
t.c8.py
e = 2f = 3g = 4 #
c11.py
from t import * #
* 表示匯入 t 包裡的所有模組
print(c7.a) #
c7在init中被定義,可引用
print(c8.e) #
c8在init中未定義,不可引用
執行結果是2
3. __init__.py的重要作用
#t包下面的__init__.py
import sys #
批量導入庫,內建標準庫
import
datetime
importio
#c13.py
import
tprint(t.sys.path) #
在這裡插入**片
1.包和模組是不會被重複的匯入的,只會執行一次
2.避免迴圈匯入,不要形成閉環(多個模組之間形成閉環)
3.匯入模組的時候會執行模組裡所有的**
python(五)函式 模組 包
模組 包的概念?在python中,乙個.py檔案就稱之為乙個模組 module 我們在編寫程式的時候,也經常引用其他模組,包括python內建的模組和來自第三方的模組 你也許還想到,如果不同的人編寫的模組名相同怎麼辦?為了避免模組名衝突,python又引入了按目錄來組織模組的方法,稱為包 packa...
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...
Python3簡單教程(五)函式
相關檔案及後續更新會上傳至 函式是組織好的,可重複使用的,用來實現單一,或相關聯功能的 段。函式能提高應用的模組性,和 的重複利用率。規則 函式 塊以def關鍵字開頭,後接函式識別符號名稱和圓括號 任何傳入引數和自變數必須放在圓括號中間,圓括號之間可以用於定義引數。函式的第一行語句可以選擇性的使用文...