1. 程式人生 > >python中包,模組,函式,與變數作用域

python中包,模組,函式,與變數作用域

python 專案的組織結構(最頂級的組織結構)

最頂級的是包,其次是模組,類,然後是函式、變數。

  1. 區分不同的模組前面加上包的名字:one.c1,two.c1(包.模組)
  2. 包下面可以有子包,也可以有模組
  3. 資料夾要變成一個包,要有一個__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:下面是一些注意事項:

  1. 包和模組是不會重複匯入的
  2. 要避免迴圈匯入,當要匯入多個模組的時候。python匯入一個模組,就會執行其所有的程式碼