close

 

6. 函式

(1) Python的函式使用def關鍵字來宣告,且不需要像C++一樣在宣告時寫下回傳值的資料型態,而函式內容的程式碼也不需要像C++一樣用大括號包起來。其語法為:

def 函式名稱(參數一, 參數二, 參數三…):

          #函式內容

    return 回傳值  # 函式不一定要設有回傳值,視程式設計者需要而定

要注意,在Python中,分辨各個層次不是以大括號,而是用縮排(縮排通常是用按一次<tab>鍵的方式)。以上的#函式內容def兩行之間相差一個<tab>鍵。

如以下函式,判斷a是否為奇數:

def is_odd(a):

          if a%2==1:

                   return True

          else:

                   return False

 

(2) 函式的輸入參數,其數目可以是不定的,這使得函式的設計變得更有彈性。此種設計需使用到*符號,如以下範例,是用來寫出一個多項式(polynomial)的形式:

def show_polynomial(*pars):

    r=""

    for i in range(0, len(pars), 1):

        if i==0:

            r+=str(pars[i])

        else:

            r+=str(pars[i])+"*x^"+str(i)

        if (i!=len(pars)-1):

            r+="+"

    return  r

 

s=show_polynomial(1,2,3)

print(s)

 

執行後顯示:

1+2*x^1+3*x^2

(3) python中函式可回傳多個變數,且這些變數的資料型態可以互不相同。這些變數以一個稱為Tuple的形式來包裝。如以下範例,是在描述一個數字的特性:

def get_num_info(a):

    s=""

    if (a%2==1):

        s="奇數"

    else:

        s="偶數"

 

    n=1

    b=a

    while(b>10):

        b=b/10

        n=n+1

 

    is_negative=True

    if(a<0):

        is_negative=True

    else:

        is_negative=False

 

    return (s,n,is_negative)   #(s,n,is_negative)就是所謂的Tuple形式

 

a,b,c = get_num_info(13)   # a,b,c為回傳的Tuple內容,abc的名稱可以自訂

print(a)

print(str(b)+"位數")

print("是負數嗎?"+str(c))

 

執行後顯示該數字的特性:

奇數

2位數

是負數嗎?False

 

(4) python當中,函式可以被當作物件看待,因此一個函式也能被當作另一個函式的輸入參數。如以下範例,有三個數學多項式函式:function1function2function3,而compare函式則是用來比較任意二多項式函式在某個點x上,其函數值誰大誰小:

def function1(a):

    return 2*a*a-9*a+10

 

def funtion2(a):

    return 3*a+6

 

def function3(a):

    return a*a*a-10*a

 

def compare(f1,f2,a):

    print ("at",a,":")

    print ("f1=",f1(a),", f2=",f2(a))

    if f1(a)>f2(a):

        print("f1>f2")

    elif f1(a)<f2(a):

        print("f1<f2")

    elif f1(a) == f2(a):

        print("f1=f2")

 

compare (function1, function3, 5)

 

執行後顯示:

at 5 :

f1= 15 , f2= 75

f1<f2

 

上一篇: 迴圈

下一篇: 類別

回python教學 總目錄

arrow
arrow

    埃伯 發表在 痞客邦 留言(0) 人氣()