~~學習進度表~~
函數 (function) 是一種功能性的程式碼集合,可以將程式 (program) 分割成小部分,藉由呼叫 (call) 函數安排執行順序
def function_name():
pass
pass
定義函數使用關鍵字 (keyword) def ,其後空一格接函數名稱與小括弧,小括弧用來放參數列 (parameter list) ,函數可以有參數 (parameter) 也可以沒有參數,沒有參數的函數的小括弧留空,另外函數可用 return 設定回傳值 (return value) ,沒有回傳值的函數也就不需要 return 。舉一例如下
def big(a, b):
if a > b:
return a
else:
return b
big() 函數回傳兩個參數中的較大值,參數名稱及數量則是依自己定義放在參數列,這裡的參數用了 a 與 b ,另外此例用了兩個 return ,這裡 return 就是函數結束執行,將控制權交還原本呼叫函數的地方。
我們將 big() 寫成一個完整範例,加上呼叫 big() 並且印出結果
def big(a, b):
if a > b:
return a
else:
return b
print()
print(big(33, 22))
print(big("John", "Mary"))
print()
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:big_demo.py
# 功能:示範 Python 中的函數
# 作者:張凱慶 */
此例先比較 33 與 22 的大小,然後印出哪一個比較大
print(big(33, 22))
接下來則是比較 "John" 與 "Mary" 的大小,字串 (string) 比較是先比較第一個字元 (character) ,按字母順序,順序越後面的值越大
print(big("John", "Mary"))
執行結果如下
$ python big_demo.py |
33 |
Mary |
$ |
函數常見的運用為重複性質的工作,另舉一例如下
def print_newline():
print()
def print_something(a):
print(a)
def return_something(a):
return a
print_newline()
s = "There is no spoon."
print_something(return_something(s))
print_newline()
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:print_demo.py
# 功能:示範 Python 中的函數
# 作者:張凱慶 */
這裡總共定義了三個函數, print_newline() 就是簡單的印出新行
def print_newline():
print()
print_something() 則是印出參數 a
def print_something(a):
print(a)
return_something() 則是回傳參數值
def return_something(a):
return a
執行結果如下
$ python print_demo.py |
There is no spoon. |
$ |
學會函數後,我們接下來看看怎麼設計類別 (class) 囉!
中英文術語對照 | |
---|---|
呼叫 | call |
字元 | character |
類別 | class |
關鍵字 | keyword |
參數 | parameter |
參數列 | parameter list |
程式 | program |
回傳值 | return value |
字串 | string |
重點整理 |
---|
1. 函數是一種功能性的程式碼集合,可以有參數及回傳值,參數不限個數,回傳值最多只能有一個。 |
2. return 陳述將執行控制權還給呼叫函數的地方。 |
問題與討論 |
---|
1. 為什麼函數要有參數?若在函數中改變參數的值,原本的參數會被改變嗎? |
2. 如果要在函數中改變參數的值該如何處理? |
3. 為什麼函數只能有一個回傳值?如果有需要回傳多個數值該如何處理? |
練習 |
---|
1. 寫一個程式 exercise0801.py ,裡頭設計一個函數 sum() ,用以計算兩個整數的和。 |
2. 承上題,另寫一個程式 exercise0802.py ,改成接受使用者輸入的版本。 |
3. 寫一個程式 exercise0803.py ,裡頭設計一個函數 sum() ,只用一個整數參數 p ,結果回傳 1 到 p 之間所有正整數的和。 |
4. 承上題,另寫一個程式 exercise0804.py ,改成接受使用者輸入的版本。 |
5. 寫一個程式 exercise0805.py ,裡頭設計一個函數 factorial() ,用以計算階層值。 |
6. 承上題,另寫一個程式 exercise0806.py ,改成接受使用者輸入的版本。 |
7. 寫一個程式 exercise0807.py ,裡頭設計一個函數 fibonacci() ,用以計算費氏數列。 |
8. 承上題,另寫一個程式 exercise0808.py ,改成接受使用者輸入的版本。 |
相關教學影片
- Python 的簡單陳述 return ⇨ YouTube 頁面連結
- 第五堂課導覽 ⇨ YouTube 頁面連結
- Python 的內建函數與自訂函數 ⇨ YouTube 頁面連結
- Python 函數的關鍵字引數 ⇨ YouTube 頁面連結
- Python 函數的預設引數 ⇨ YouTube 頁面連結
- Python 函數的函數參數 ⇨ YouTube 頁面連結
- Python 函數的不限個數參數 ⇨ YouTube 頁面連結
- Python 函數的回傳值 ⇨ YouTube 頁面連結
- Python 中參數與引數的不同 ⇨ YouTube 頁面連結
- Python 的協程函數 ⇨ YouTube 頁面連結
- Python 的裝飾子 ⇨ YouTube 頁面連結