- 登入
- 註冊
本系列從 Python 基本的語法開始介紹,讓沒有程式背景的新手,也能開始用 Python 程式交易。如果你是進階的交易者,可以點擊連結觀看量化通其他 Python 進階文章,認識 爬蟲、實用套件、資產配置 等內容。
講到 Python,就想必絕對不能錯過 Python 廣大的套件生態圈,所以這章節就來跟大家講解怎麼安裝、導入與使用套件囉!Python 安裝套件有很多做法,這邊跟大家介紹常用的幾種做法:用 pip install 安裝以及用 Pycharm 工具安裝。
可以跨出 Pycharm 環境直接安裝,不限定在哪個環境,甚至原生環境都可以,在雲服務(GCP, AWS)上安裝也都是使中指令居多(讓大家覺得打指令很厲害),所以未來還是得有個大概的使用概念比較好哦!
對於安裝的路徑、套件名稱、安全性等等不好驗證,之前有些套件會故意取的名稱很像,讓使用者安裝錯誤。
但功能雖然一致,可以當你在執行使用套件的時候,相關程式內的一些資料可能就會外流,這件事還一度上了資安報告中呢,所以除非很熟或是使用環境不會涉及到個人資料等等的。
否則會建議使用 Pycharm 提供的工具包去安裝就好囉!
有介面化,可以方便安裝與搜尋相關套件,也可以很方便的切換套件版本號,以及我個人覺得很重要的部分,以 Pycharm 而言,可以快速點進套件網址,確認套件到底是不是真實的套件而不是釣魚套件。
離開 Pycharm 到其他工具中就可能得適應其他使用方式,而在雲服務中就可能無法使用這模式安裝,這部分我建議可以參考 requirements.txt 的套件管理方式。
套件的導入比較單純,但也分成幾種不同的作法:
假設我們的 our_main.py 內有:
def run():
print("run 1")
def run_sec():
print("sec run")
我們想從另一份腳本內呼叫該函式就可以是:
import our_main
if __name__ == '__main__':
run() # 結果: run 1
run_sec() # 結果: sec run
# 這時候兩個都可以被呼叫,因為我們整份 our_main 內的都要被呼叫
from our_main import run
if __name__ == '__main__':
run() # 結果: run 1
# 這時候我們是 call不到 run_sec() 的,因為我們指定只呼叫 run()
以下以常用的datetime套件做舉例,基本上大原則就是 from xxx(從哪個檔案)import(導入)bbb(哪個函式):
直接把整個套件包內存在的 function、class 都呼叫進來:
import datetime
print(datetime.datetime.now())
結果:
2022-06-03 17:34:12.084197
直接把整個套件包內存在的 function、class 都呼叫進來,但因為有時候套件名稱或是內部函數名稱很長,故可以用這方式縮短後續呼叫名稱。
最常見的還有 import pandas as pd 這範例:
iimport datetime as dt
print(dt.datetime.now())
結果:
2022-06-03 17:34:12.084228
一份 script 內可以有很多函式、參數、class 等等的,但當我們只需要其中一些功能時,就可以指定 Script 名稱,然後導入我們需要的功能函式就好:
from datetime import datetime
print(datetime.now())
結果:
2022-06-03 17:34:12.084228
那當然,有了上面的經驗,就更可以將每個需求都結合起來,在套件使用與程式開發上,可讀性也是一大良好的撰寫習慣,所以像是一些很長又長的很像的套件,就很適合這樣處理:
from datetime import datetime as dt
print(dt.now())
結果:
2022-06-03 17:34:12.084228
當需要呼叫的套件在某資料夾內:
例如: test.py(我們主要要寫的程式腳本)在主目錄底下,但是我們所需要的 def run_sec() 的函式在一份叫做 testrun.py的腳本內,而 testrun.py 在一個名為 run_func 的資料夾內:
這時候在我們的 test.py 中就要用以下這樣呼叫:
from run_func.testrun import run_sec
這樣就可以針對不同資料夾的內容做呼叫囉!
本系列會從 Python 基本的語法開始介紹,讓沒有程式背景的新手,也能開始用 Python 程式交易。如果你是進階的交易者,可以點擊連結觀看量化通其他 Python 進階文章,認識 爬蟲、實用套件、資產配置 等內容。
建議可以照順序閱讀,從零開始學習 Python:
大家可以發現不同的呼叫方式都可以達成相同的功能,未來隨著撰寫習慣、使用的套件多寡等等,
會涉及到更多各類型套件的使用,那這些好的習慣都是為了未來開發時方便囉!有任何問題或錯誤歡迎大家提出來討論!感謝收看!