一、前言
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__':是什么意思吧!
#python#