1. 程式人生 > 實用技巧 >python三種匯入模組的方法

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