python三種匯入模組的方法
做為python初學者,有時候搞不清楚匯入模組的作用。
直接匯入模組
形式:import modname
-
模組是指一個可以互動使用,或者從另一Python 程式訪問的程式碼段。
-
只要匯入了一個模組,就可以引用它的任何公共的函式、類或屬性。
-
模組可以通過這種方法來使用其它模組的功能。
-
用import語句匯入模組,就在當前的名稱空間(namespace)建立了一個到該模組的引用。
-
當使用在被匯入模組中定義的函式時,必須包含模組的名字,不能只使用 funcname,而應該使用 modname.funcname。
import os # 匯入os模組 def test_import(): # 使用os的listdir方法,列出指定目錄的檔案 file=os.listdir('../config') print(file)
匯入模組具體的方法
形式:
from modname import funcname
from modname import fa, fb, fc
from modname import *
-
funcname 被直接匯入到本地名字空間,所以它可以直接使用,而不需要加上模組名的限定。
-
- 表示,該模組的所有公共物件(public objects)都被匯入到 當前的名稱空間,也就是任何只要不是以”_”開始的東西都會被匯入。
-
modname沒有被定義,所以modname.funcname這種方式不起作用。
-
如果funcname如果已經被定義,它會被新版本(該匯入模組中的版本)所替代。
-
如果funcname被改成指向其他物件,modname不能不會覺察到。
from os import listdir
def test_import2():
# 列出指定目錄的檔案
file=listdir('../config')
print(file)
建議
-
1)如果你要經常訪問模組的屬性和方法,且不想一遍又一遍地敲入模組名,使用 from module import。
-
2)如果你想要有選擇地匯入某些屬性和方法,而不想要其它的,使用 from module import。
-
3)如果模組包含的屬性和方法與你的某個模組同名,你必須使用import module來避免名字衝突。
-
4)儘量少用 from module import * ,因為判定一個特殊的函式或屬性是從哪來的有些困難,並且會造成除錯和重構都更困難。
內建函式__import__()
-
import() 函式用於動態載入類和函式 。
-
如果一個模組經常變化就可以使用 import() 來動態載入。
-
import() 的引數是一個字串,這個字串可能來自配置檔案,也可能是某個表示式計算結果。
例如:mymodule = import (’module_name’)
a.py 檔案程式碼:
#!/usr/bin/env python
#encoding: utf-8
import os
print ('在 a.py 檔案中 %s' % id(os))
test.py 檔案程式碼:
#!/usr/bin/env python
#encoding: utf-8
import sys
__import__('a') # 匯入 a.py 模組
執行 test.py 檔案,輸出結果為:
在 a.py 檔案中 4394716136
參考:cnblogs.com/allenblogs/archive/2011/05/24/2055149.html