close
一、前言
def是什麼?很多時候在寫程式的時候某一部分需要一直用到,重複性非常高,
這時候為何不把常會用到的部分變成一個方法(函數),需要的時候去呼叫他叫好了?
這樣重複的程式碼我們就只需要寫一次。
二、自訂函數def
這次的目的有兩個:
a. 把常出現的程式碼變成只要寫一次
b. 可以把這個方法用在你之後寫的py檔裡面
讓我們來看這次的範例吧!
(1) 原本又臭又長的程式碼
從yahoofinance把多檔股票資料抓下來,並且計算技術指標方便後續使用
你會發現,抓下股票及計算指標不一樣而已
(2) def規則及注意要點
a. 使用方法如下
def 你的函數名稱(預設參數):
你的執行邏輯
return 你要回傳的值
b. 縮行的地方要一起執行(逐行執行時要注意)
記得def下面你的執行邏輯在逐行執行時,要一同反白執行
c. 預設參數可給可不給
預測參數可給可不給看需求
d. 用return拿到我們要的東西
最後要拿到的東西用return返回給我們,範例中我要拿回我計算過後技術指標的df並且放到我之後給的變數中
改完的完整程式碼如下:
# good.py
import pandas, numpy
import pandas_datareader as web
# 自訂一函數
def get_stock(stock):
# 取得股票
df = web.DataReader(stock + '.TW', 'yahoo')
# 計算技術指標
df['SMA20'] = df['Close'].rolling(20).mean() # 在close每20個算一個平均並滾動
df['SMA40'] = df['Close'].rolling(40).mean()
df['SMA60'] = df['Close'].rolling(60).mean()
df['SMA120'] = df['Close'].rolling(120).mean()
return df # 算完回傳df給我
df_2330 = get_stock('2330')
df_2454 = get_stock('2454')
df_2317 = get_stock('2317')
是不是美觀很多呢!,效果是一樣的!
三、在其他py檔用其他py檔的def
同一目錄下 from [放寫好函數的py檔] import [你的函數名稱]
# main.py
from good import get_stock
df_2330 = get_stock('2330')
df_2454 = get_stock('2454')
df_2317 = get_stock('2317')
# 附註 from good import * 給米字鍵就是good.py裡面全部的def
四、後記
趕快把程式碼變美觀吧,之後我們來看看 if __name__ == '__main__':是什麼意思吧!
文章標籤
全站熱搜
留言列表