2017年8月2日 星期三

Python ê 基礎 - 函式



基本

函數/函式/hâm-sit (function) 是一種起做 Python 裡蓋重要 ê 乜件。伊和  while 圈圈 (while loop) 和 for 圈圈 (for loop) 相sia̋ng,都是重複利用寫過 ê code。毋過,while 佮 for 攏是連紲運行,一直到條件判段式成做 False,抑是 List 用佮貼底,才會得通做捌項代誌。你若是佇咧無仝所在欲使用,就無法度囉。

函式就是共一段 code,一咧名,不管時想欲使用,就叫伊的名。按呢生你就有真大 ê 自由度來使用伊。咱來看:

def fahrenheit(T_in_celsius):
    """ returns the temperature in degrees Fahrenheit """
    return (T_in_celsius * 9 / 5) + 32

c1 = fahrenheit(13)

c2 = fahrenheit(27.3) + 5

for t in (22.6, 25.8, 27.3, 29.8):
  print(t, ": ", fahrenheit(t))

函式咱愛先伊定義: 用關鍵字 def 𤆬頭一个人一看就知意思 ê 名,閣紲落去用月眉號 ()來參數包--起來,落尾才綴一咧大句點 : 完成宣告。函式的體 (body),就攏愛向正爿勼,來函式想欲做 ê 代誌寫好。

佇頂仔 ê 例,函式名號做 fahrenheit, 這是溫度 ê 單位 Hua-sit (華語:華式,Fahrenheit)。伊的參數是 T_in_celsius ,咱一看名就知這是另一 ê 溫度 ê 單位 Se-sit (華語:攝式,Celsius)。咱一看就知影,伊是共 Se-sit 轉做 Hua-sit ê 函式。內底 """ 是註解: 彼是予人看ê,電腦無佇看彼。咱先莫伊。

會當看著,fahrenheit 會使佇任何所在:會當數字型態 ê 所在,就會當囥伊。因為伊會擲出來的值,嘛是數字型態。這予咱真大ê自由,程式嘛加真屧貼,媠氣。

程式 ê 參數,無限定偌濟。若有濟 ê 參數,愛用逗點(華語:逗號,,)共 in 分開,像 func(para1, para2, para3)。若是完全無參數,就莫寫,像按呢 func()。


無定著愛寫的參數(Optional Parameters)

咱嘛會用得予函式參數一咧預設值(ū-siat-ta̍t),按呢生,咱就會使共捷捷用的值,成做預設值,看下跤 ê 例?

def Hello(name="everybody"):
    """ Greets a person """
    print("Hello " + name + "!")

Hello("Peter")
Hello()

name="everybody" ,name是參數,"everybody" 是預設值。咱若知人名,就添入參數位,若無,放予空空,伊就用 "everybody" 共伊印--出來。

毋過,有時咱有幾落 ê  無定著愛寫的參數,拄好上尾彼咧愛寫:

def sum(start=1, end=10):
    c = start
    s = 0
    while (c < end):
        s = s + c
        c = c + 1
    return s
伊是會使對 start 開始,疊加到 end 進前一咧整數。sum(2, 11)  就是 1 + 2 + 3 + ... + 10,答案是 54。咱若想欲對 1 開始加,start 會使免寫,毋過 sum(11),sum 毋知 11 是 start 抑是 end,所以咱愛共伊講:

sum(end=11)
伊就知 start 用預設值,答案是 55,這號做 關鍵字參數 (keyword parameters)


說明字串

咱看著函式裡頭一逝是字串。毋過,伊孤一ê佇遐,無囥入去參數,無啥乜作用。咱會使共伊當做註解。伊的目的是欲予人知影這个函式的作用,佮有啥乜愛注意。佇每一咧函式前阿寫註解,是一咧真好的習慣。
咱嘛會使共這个說明字串印出來:

def Hello(name="everybody"):
    """ Greets a person """
    print("Hello " + name + "!")

print("The docstring of the function Hello: " + Hello.__doc__)

伊會印:
The docstring of the function Hello:  Greets a person 

擲轉來濟濟的值

函式擲轉來值,普通是一咧。咱嘛會使一擺等幾落ê。

def arithmetic(a,b):
    """ It give the result of four basic arithmetic operation """
    return a+b, a-b, a*b, a/b

all_4 = arithmetic(100, 33)
add, sub, mul, div = arithmetic(100, 33)

print(all_4)
print(add, sub, mul, div)
print(all_4[0], all_4[1], all_4[2], all_4[3])
運行ê結果:
(133, 67, 3300, 3.0303030303030303)
133 67 3300 3.0303030303030303
你若用一个變數起乘伊,伊就是一咧 Tha-poh (Tuple)。Tha-poh 是 Lists 的親情,嘛是一種資料型態,是一種有順序ê物件 (Sequential),嘛會使用索引(index) 來提伊的值。



這的文章的例,是對 Python3 Tutorial 提--來ê,若有興趣欲閣學閣較深咧,會使去看原文。



沒有留言:

佇 Linux 來看GPX 檔案

最近定定有戶外活動。使用𤆬路機 (GPS) 來記錄行過的路線。普通我記錄路線,攏是用手機仔抑是專門个𤆬路機,罕得用電腦來看。 毋過,"仙人拍鼓有時錯,跤步踏差啥人無"。有一擺我無細膩,袂記得共一擺活動的路線收煞起來,閣直接開始記錄下一擺的活動,按呢共幾落...