iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 11
0
Software Development

從0開始學習程式-Python系列 第 12

[Day15]你知道函數嗎?


假期結束了!也希望這兩天烤肉開心!但不要成為廁所管理員
今天我們來介紹一個重要的功能

什麼是function?

顧名思義叫做方程式,當我們丟一些變數進到function,經過一些運算後就會丟出一個結果給我們。
舉例來說:
當變數x=?時,正弦函數sin(x)=sin(?),此時函數就會輸出0。
又或我們自己定義一個函數f,裡面的變數是x,則f(x)=x×x=x^2(x的平方),x^2就是我們期待函數幫我們運算後輸出的結果。
所以當x=2進入到函數後,會輸出4;當x=-2進入到函數後,會輸出4。

廣義function

就是將一個定義域裡面的東西,轉到另外一個空間,這個空間可以稱為值域,而轉換的過程或者轉換的操作,我們稱之為函數。更進一步來說,若這個轉換吻合線性關係,我們會進一步說這是一個線性轉換,詳細請看「線性代數」課本。

為什麼需要function?

當然python有先幫大家預先建立一些常見的數學function,然而在撰寫程式的過程,我們需要的操作可能python並沒有幫大家建立好,這時候我們就會自己建立function。當我們推廣function的意義用在programming時,function裡面就是會有我們設計的運算或者操作,當我們將一些變數或者東西放到function(當然也可以不放任何變數),這時候function就會啟動開始,將設計好的操作跑過一次,並回傳答案給主程式或者指定給另外一個變數。

什麼時候會用到function?

其實你在寫的程式就是一個function,我們又會叫main function(主程式),如同我們前面所說,function可以不單只有數學操作,它可以是一個操作。當我們的main有很多的步驟需要處理,抑或有些步驟可能在一開始即前面都需要操作,此時若我們將所有功能都寫在main,這時候主程式就會變得很龐大,對於在debug時或者別人在看code,是相當不友善的。此時此刻,我們就會利用function來幫助我們將程式更有系統化的撰寫。

如何寫一個function?

在python裡面,funtion的寫法大概如下

def funtion(var_1,var_2....)
    .....
    ans=....
    return ans

當funtion裡面的操作完成時,我們需要透過return將結果回傳。
我們來練習一下吧!

def squ(x):
    y=x*x-2*x+1
    return y

# 以下為主程式
answer=squ(2)+squ(3)-squ(0)
# answer=1+4-1
print(answer) #output:4

當程式跑到squ(2)時,就會呼叫squ(x),並將2指定給x,帶入squ(x)這個function進行運算,最後回傳結果1給squ(2),同理squ(3)時,將3指定給x,帶入squ(x)進行運算,最後回傳結果4給squ(3)。

那function可以有多個回傳值嗎?

當然可以,當我們有些計算結果可能需要回傳多個結果時,只要在return同時將多個結果回傳即可,當然回傳時,建議也同時有等量的變數可以來接應回傳值。

def squ(x):
    y=x*x-2*x+1
    z=(x**0.5)*10
    return y,z
    
#以下為主程式
y1,z1=squ(4)
y2,z2=squ(9)
y3,z3=squ(0)
ans_y=y1+y2+y3
ans_z=z1+z2+z3
print(ans_y) #output:74
print(ans_z) #output:50.0

好啦~今天就到這吧!
function還有一些東西我們之後再來繼續說!
今天作業是邊長為5
Q. 利用function寫一個計算正方形面積和正三角形面積,並且計算當邊長為5和10的正方形面積相差多少?又邊長為5的正方形面積和邊長為10的正三角形面積相差多少?


上一篇
[Day14]當我們集在一起
下一篇
[Day16] 遞迴與分而自治
系列文
從0開始學習程式-Python32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言