python中包,模組,函式,與變數作用域
阿新 • • 發佈:2018-12-21
python 專案的組織結構(最頂級的組織結構)
最頂級的是包,其次是模組,類,然後是函式、變數。
- 區分不同的模組前面加上包的名字:one.c1,two.c1(包.模組)
- 包下面可以有子包,也可以有模組
- 資料夾要變成一個包,要有一個__init__.py檔案(也是一個模組,它的名字就是包的名字)
如何在一個包中引用其他模組的變數?
首先在ex1.py中宣告一些變數:
a = 2
要在ex2.py中引用a變數:
直接匯入ex1模組,然後用 . 的方式來引用ex1中的變數
import ex1
print(ex1.a)
import ex1 as m print(m.a)
下面兩種方式可以匯入具體的變數:
from t.ex1 import a
print (a)
__all__ = ['a','c'] #可以規定那些變數能被模組外引用
a = 2
b = 3
c = 4
d = 5
from t.ex1 import * #星號表示匯入ex1中的所有變數
print (a)
print(b)
print(c)
print(d)
from t.ex1 import(a,b,
c,d)#一次也可以匯入多個模組,比較推薦括號換行的方式
print (a)
print(b)
print(c)
print(d)
在模組t下的__init__.py檔案中寫一個列印語句:
再匯入模組t的過程中,會執行模組t下的__init__.py語句中的語句。直接import t,也會執行init中的語句。
PS:__all__也可以在__init__.py中使用,定義t中可以被匯入的模組或是變數。
from t.ex1 import(a,b,
c,d)#一次也可以匯入多個模組,比較推薦括號換行的方式
print(a)
print(b)
print(c)
print(d)
如果程式中需要匯入的模組太多,可以把這些要匯入的模組寫入t模組的__init__.py檔案中。這樣在寫程式時候,只要匯入t模組,就可以匯入相應的模組了。
PS:下面是一些注意事項:
- 包和模組是不會重複匯入的
- 要避免迴圈匯入,當要匯入多個模組的時候。python匯入一個模組,就會執行其所有的程式碼