2015年10月12日 星期一

Python下自訂module

我最喜歡Python的地方就是可以很容易地開發自己的函式庫。
當初剛接觸matlab時,發現其可以在同一個folder下呼叫自己的函式.m檔。
真的覺得很方便開發,可以很開心的編輯自己的函式庫。
而且如果要使用從網路下載的他人開發的函式,就放在同一個folder下就行了。
不過函式.m檔的檔名必須要和函式名一樣,所以一個.m擋下可以很多個函式嗎?
我不知道,沒試過。如果可以的話就好了,不然會有好多個.m擋。

Python的module就真的很不錯。一個.py檔,裡面可以放很多的def函式。
把.py檔放在同一個folder下就可以import module。
或把.py檔放在系統的預設的路徑之中,系統就會在import時去搜尋module。

首先先看目前的工作路徑:
import os
os.getcwd()  #get current working directory

再看看系統預設的路徑有什麼:
import sys
sys.path

可以把module其.py檔的路徑增加進去:
sys.path.append('Users/david/Google Drive/Python Lab')
然後再看看sys.path有沒有真的加了進去了。
再來import該module就OK了。
不過可惜的是,新增進去後,下次再打開IDLE就沒有了。
所以退而求其次,要把module的.py檔放在sys.path的其中之一。
要怎麼把module函式庫的folder設為永久系統預設路徑之一,我目前還沒找到方法。

使用函式庫也很方便。
例如我最近試把以前的一些機器學習的演算法寫成一個ML.py檔。
只要把ML.py檔放在工作路徑下或系統預設路徑之一,就可以載入呼叫裡面的函式。

import ML
trainSet = ML.csvRead('TrainData.csv')
w = ML.LinearRegression(trainSet)

python的module對於自訂函式的開發真的蠻方便的。

我希望能逐步完成我的ML函式庫,接著LA函式庫。
https://github.com/ntudavid/ML_lab
https://github.com/ntudavid/LA_lab
https://github.com/ntudavid/CV_lab
加油!




沒有留言:

張貼留言