區別主要有以下幾點:
1、使用import直接導入整個模塊的話那么在引用模塊中的變量或者函數時需要使用model.function() or model.variable的形式,因為這樣只是引入了模塊名,而沒有把模塊內容引入到當前語義表中;而from import 語句則可以直接使用函數名或變量名,沒有必要在前面加模塊名,因為這將命名(包括函數或變量)導入到本模塊的語義表中。
2、使用import導入整個模塊的話,所有的變量,包括以"_"開頭的變量,都可以通過model.variable的形式訪問;而如果使用from model import*的形式的話則默認不導入"_"開頭的變量(函數名);不過如果使用from model import _foo的形式顯式導入的話則還是可以訪問這個變量(或函數)的。
模塊的默認搜索路徑是按照sys.path搜索的,這個變量默認已經導入了當前目錄、PYTHONPATH指向的目錄以及安裝目錄的。
如果一個python腳本引用了大量的標準模塊,為了提高啟動速度,當前目錄下會存在一個.pyc的文件,這被視為.py文件的預編譯版本。.pyc文件平臺獨立。
如果以-O參數調用python解釋器,則.pyc文件被忽略,.py文件被全部編譯成bytecode,即字節碼。
如果向python解釋器傳遞兩個-O參數,則會執行完全優化的二進制優化編譯,不過這偶爾會生成錯誤的程序,因為這樣的完全優化也只是在二進制代碼中刪除了__doc__字符串,而如果你的python腳本中本身就引用到了__doc__字符串,那么程序就會出錯,所以如果使用最優化編譯選項-OO,則需要確保無誤。
.pyc和.pyo文件不會比.py文件執行的快,他們只是在加載的時候比.py文件快!
posted on 2011-08-06 17:49
myjfm 閱讀(828)
評論(0) 編輯 收藏 引用 所屬分類:
雜