Python 有三種模組導入函數
1、 使用import 導入模組 import modname : 模組是指一個可以互動使用,或是從另一個Python 程式存取的程式碼片段。只要導入了一個模組,就可以引用它的任何公共的函數、類別或屬性。模組可以透過這種方法來使用其它模組的功能。 用import語句導入模組,就在目前的名稱空間(namespace)建立了一個到該模組的引用.這種引用必須使用全稱,也就是說,當使用在被導入模組中定義的函數時,必須包含模組的名字。所以不能只使用funcname,而應該使用modname.funcname.
注意:可加入下面的使Python支持中文註釋
#coding:gbk或#coding:utf-8或##-*- coding : gbk -*-
導入系統的模組
比如我在家目錄下創建一個m.py的文件,我們導入了許多的系統模組,例如time,string等等。這邊就類似c++裡面的include
#!/bin/env python import time import stringimport reimport socketimport threading time.sleep(10)print "java"
導入私有的模組
m.py檔案
#!/bin/env python #coding:gbk #coding:utf-8 #上面的加载是支持中文注释 def plus(a ,b): #"""XXX""" 是函数的说明或使用 """this is a test +""" a = a+b return a+b
使用import 載入m.py模組載入
#!/bin/env python #coding:gbk #coding:utf-8 "利用sys模組導入指定Python檔案的路徑" import sys sys.path.append("./") "另外一種導入Python檔"
from m import plus
print plus(12,3)
print help(plus)
from modname import funcname from modname import fa, fb, fc 或from modname import * 與第1種方法的區別:funcname 被直接導入到本地名字空間去了,所以它可以直接使用,而不需要加上模組名的限定*表示,該模組的所有公共物件(public objects)都被匯入到目前的名稱空間,也就是任何只要不是以”_”開始的東西都會被導入。 modname沒有被定義,所以modname.funcname這種方式不起作用。並且,如果funcname如果已經被定義,它會被新版本(該導入模組中的版本)所取代。如果funcname改成指向其他對象,modname不能不會覺察到。 建議:
1)如果你要經常存取模組的屬性和方法,且不想一遍又一遍地敲入模組名,使用from module import 2)如果你想要選擇性地導入某些屬性和方法,而不想要其它的,使用from module import 3)如果模組包含的屬性和方法與你的某個模組同名,你必須使用import module來避免名字衝突4)盡量少用from module import * ,因為判定一個特殊的函數或屬性是從哪裡來的有些困難,並且會造成調試和重構都更困難。
#!/bin/env python #!/bin/env python #coding:gbk #coding:utf-8 "利用sys模块导入指定Python文件的路径" import sys sys.path.append("./") "另外一种导入Python文件" from m import plus print plus(12,3) print help(plus)
3、使用內斂函數import 除了前面兩種使用import關鍵字的方法以外,我們還可以使用內建函數import() 來導入 module。兩者的差別是,import 後面跟的必須是一個型別(type),而import() 的參數是一個字串,這個字串可能來自設定文件,也可能是某個表達式計算結果。例如mymodule = import ('module_name') 附註: 1)模組的內容都放在一個模組檔案中,如mymodule 的內容應該放在PYTHONPATH 目錄下的一個mymodule.py中,C實現的除外2)包可以將幾個模組名稱空間組織起來, 如A.b 就表示在包A中的一個子模組b
#!/bin/env python #coding:gbk #coding:utf-8 "利用sys模块导入指定Python文件的路径" import sys sys.path.append("./") "另外一种导入Python文件" my = __import__("m") print my.plus(12,3) print help(my.plus)
參考資料:
1、http://www.cnblogs.com/allenblogs/archive/2011/11/15 /2055149.html
2、http://blog.csdn.net/chenguolinblog/article/details/11521611