標籤:prim 尾碼 ini 空間 pack 開頭 組成 編譯 var
模組(module):用來從邏輯(實現一個功能)上組織Python代碼(變數、函數、類),本質就是*.py檔案。檔案是物理上組織方式"module_name.py",模組是邏輯上組織方式"module_name"。
包(package):定義了一個由模組和子包組成的Python應用程式執行環境,本質就是一個有層次的檔案目錄結構(必須帶有一個__init__.py檔案)。
package:目錄,包下面必須有一個__init__.py檔案,否則只是一個單純的目錄,不算是一個包
module:py檔案
匯入方式有以下幾種:
#①採用from...import方式
from 包絕對路徑 from 模組py檔案
from package.subpackage1 import foo1
from 模組 import 變數
from 包 import 子包
#②採用import方式
import package.subpackage1
import 模組
匯入函數、變數、類只能使用from ... import ... 方式。
如果匯入的是一個包而不是一個模組,則python引擎會去執行這個包的目錄下的__init__.py,此時這個檔案中可能是一些匯入的語句,例如:
import Primitive, Graph2d, Graph3d,標紅的三個都為模組的名字。
如果是模糊匯入,例如:from Root.Pack1 import *,Pack1為一個包,則引擎會讀取Pack1下的__init__.py檔案,根據該檔案裡面的__all__變數匯入相應的模組。
第一次匯入一個模組時,模組中的程式會被執行一次,下一次再匯入則不會再執行了。
模組在Python可理解為對應於一個檔案。在建立了一個指令檔後,定義了某些函數和變數。你在其他需要這些功能的檔案中,匯入這模組,就可重用這些函數和變數。一般用module_name.fun_name,和module_name.var_name進行使用。這樣的語義用法使模組看起來很像類或者名字空間,可將module_name 理解為名字限定符。模組名就是檔案名稱去掉.py尾碼。
from module import names 可以直接從模組中匯入名字到符號表,但模組名字不會被匯入。 from module import * 可以把模組中的所有名字全部匯入,除了那些以底線開頭的名字元號。不建議使用,不清楚匯入了什麼符號,有可能覆蓋自己定義的東西
pyc檔案是py檔案編譯成的位元組碼檔案,在匯入一個模組的時候會自動在py檔案的目錄下產生pyc檔案,pyc主要為了可重用模組的效率,因此,只有使用import或者from ... import ... 匯入一個模組的時候才會產生pyc。匯入的模組被認為是可重用的模組,而直接執行一個py檔案時是不會產生pyc檔案的。
Python中的import